- Django
- SQL
- 뷰
- stack
- 스택
- outer join
- update
- 쟝고
- Queue
- 백트래킹
- drf
- Tree
- count
- regexp
- M:N
- Article & User
- create
- DB
- delete
- Vue
- 통계학
- ORM
- migrations
- 그리디
- 완전검색
- distinct
- N:1
- 이진트리
- 트리
- 큐
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
목록분류 전체보기 (301)
데이터 분석 기술 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cq834H/btsJZ8lHAzJ/ZjQ4bzVjD7dRyS2Aqw0IGK/img.png)
SolutionSELECT ROUND(AVG(bill), 2) AS avg_salesFROM (SELECT day, sum(total_bill) AS bill FROM tips GROUP BY day ); 처음에는 GROUP BY를 한 후에 SELECT 절에서 바로 평균과 반올림을 하면 되는 줄 알았다. 하지만 GROUP BY를 하고 나서 평균을 구하면 각 날짜 별로 평균이 구해지기 때문에 쿼리 안의 쿼리에서 그룹 별로 합계를 구한 뒤에 평균을 구해야 한다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/txxKO/btsJZLRSGuK/CiRKmncBav4I5IconaxzYk/img.png)
SolutionSELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CARWHERE CAR_TYPE = 'SUV';
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RZ5nD/btsJYHXc4GA/lV4MkR99JWN4u2ukoVKxI1/img.png)
SolutionSELECT E.name, B.bonusFROM Employee ELEFT JOIN Bonus BON E.empId = B.empIdWHERE B.bonus
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mTDRk/btsJYH3D2QS/cPMWBtrGW0bNZKIk2kMRIK/img.png)
SolutionSELECT DISTINCT(CITY)FROM STATIONWHERE CITY LIKE 'A%'OR CITY LIKE 'E%'OR CITY LIKE 'I%'OR CITY LIKE 'O%'OR CITY LIKE 'U%'; 처음에 이렇게 해서 정답이었다. 하지만 뭐가 최적화할 수 있을 것 같아서 검색해 보았다. Another SolutionSELECT DISTINCT CITYFROM STATIONWHERE CITY REGEXP '^[AEIOU]'; REGEXP은 정규표현식을 사용하여 문자열 패턴을 검색하는 함수다. REGEXP를 사용하면 복잡한 문자열 검색이나 패턴 매칭을 할 수 있고, 단순한 LIKE 연산자보다 훨씬 강력하고 유연한 검색 기능을 제공한다.SELECT column_nameFRO..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAAKjA/btsJYaLRxg0/vaEb7dsGKuflVpVsA6N100/img.png)
SolutionSELECT *FROM tipsWHERE total_bill > (SELECT AVG(total_bill) FROM tips); 이 문제는 WHERE 절에는 집계함수를 사용하면 안 된다는 조건 때문에 검색을 해야 했다. HAVING 절을 사용하려면 GROUP BY가 같이 있어야 하는데 이 문제에서는 GROUP BY를 사용할 필요가 없어서 그럼 어떻게 평균값을 구할지 검색했다. 저렇게 쿼리 구문안의 쿼리 느낌으로 작성하면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bamixo/btsJWzcAru8/HjvyqUsjcWsNDo5UDJKZhK/img.png)
SolutionSELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE, IF (DATEDIFF(END_DATE, START_DATE) + 1 >= 30, '장기 대여', '단기 대여') AS RENT_TYPEFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYWHERE DATE_FORMAT(START_DATE, '%Y-%m') = '2022-09'ORDER BY HISTORY_ID DESC; 일단 IF 절을 처음 사용해 봤다. 사용하는 방법은 간단하다. IF(조건문, 조건 참..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvwmHJ/btsJWqsYAYv/fgXQKOZtJknDoxKBu4Apg1/img.png)
SELECT A1.machine_id, ROUND(AVG(A2.timestamp - A1.timestamp), 3) AS processing_timeFROM Activity A1INNER JOIN Activity A2ON A1.machine_id = A2.machine_id AND A1.process_id = A2.process_idWHERE A1.activity_type = 'start' AND A2.activity_type = 'end'GROUP BY A1.machine_id; SolutionSELECT A1.machine_id, ROUND(AVG(A2.timestamp - A1.timestamp), 3) AS processing_tim..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nD2u7/btsJWPlysPl/kFEeiHzlx1NKPB6YcewAE0/img.png)
SolutionSELECT CITY, LENGTH(CITY) AS city_lengthFROM STATIONORDER BY LENGTH(CITY) ASC, CITY ASCLIMIT 1;SELECT CITY, LENGTH(CITY) AS city_lengthFROM STATIONORDER BY LENGTH(CITY) DESC, CITY ASCLIMIT 1; 어떻게 제일 짧은 것과 제일 긴 것을 출력할까 모르겠었다. 그리고 두 개의 결과로 출력이 가능하다는 것도 몰랐다. 알았으면 쉽게 풀었을 것 같다.