Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 재귀
- 고득점kit
- 행렬곱셈
- SQL #프로그래머스 #MAX #MIN
- 파이썬 #프로그래머스 #코딩테스트
- 카카오코테
- 코딩테스트
- 분할정복
- 스택
- level2
- 방문길이
- h-index
- SQL고득점키트
- groupby
- 공식문서
- 파이선
- SQL #프로그래머스 #조건절 #ISNULL
- 파이썬
- H-인덱스
- Python
- 고득점키트
- 코테
- SQL
- 해시
- 골든래빗
- 2단계
- SQL #프로그래머스 #SELECT
- 기초
- Join
- 프로그래머스
Archives
- Today
- Total
영아일지
[프로그래머스] SQL고득점키트 - GROUP BY 본문
성분으로 구분한 아이스크림 총 주문량
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER)
FROM FIRST_HALF AS F
LEFT JOIN ICECREAM_INFO AS I
ON F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY F.TOTAL_ORDER
진료과별 총 예약 횟수 출력하기
SELECT MCDP_CD AS '진료과 코드', COUNT(APNT_YMD) AS 5월예약건수
FROM APPOINTMENT
WHERE DATE_FORMAT(APNT_YMD,'%Y-%m') = '2022-05'
GROUP BY MCDP_CD
ORDER BY 5월예약건수, MCDP_CD
** 구문 순서
- select
- where
- group by
- order by
년, 월, 성별 별 상품 구매 회원 수 구하기
SELECT YEAR(O.SALES_DATE) AS YEAR, MONTH(O.SALES_DATE) AS MONTH,
U.GENDER AS GENDER, COUNT(DISTINCT O.USER_ID) AS USERS
FROM ONLINE_SALE AS O
LEFT JOIN USER_INFO AS U
ON O.USER_ID = U.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER;
**DISTINCT : 중복 제거
즐겨찾기가 가장 많은 식당 정보 출력하기
처음에 맞는줄 알았는데 틀려서 오답노트 겸 정리해봤다
<내 첫 답>
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
->FAVORITES에서 문제 생김 (가장 많은 즐겨찾기 수가 아닌 테이블에서 가장 상단의 식당 정보)
SELECT A.FOOD_TYPE, REST_ID, REST_NAME, A.FAVORITES
FROM REST_INFO A JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.FAVORITES
ORDER BY FOOD_TYPE DESC
**서브 쿼리 : 테이블을 하나 더 만들기
테이블 정의해주고 JOIN 하면 된다!
**주의 할 점 키를 두개 동시에 충족시키도록 해야함! , FAVORITES는 A!
식품분류별 가장 비싼 식품의 정보 조회하기
SELECT A.CATEGORY, A.PRICE AS MAX_PRICE, A.PRODUCT_NAME
FROM FOOD_PRODUCT A JOIN (
SELECT CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT
GROUP BY CATEGORY) AS B
ON A.CATEGORY = B.CATEGORY AND A.PRICE = B.PRICE
WHERE A.CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY A.PRICE DESC
조건에 맞는 사용자와 총 거래금액 조회하기
SELECT U.USER_ID, U.NICKNAME, SUM(B.PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD AS B
INNER JOIN USED_GOODS_USER AS U
ON B.WRITER_ID = U.USER_ID
WHERE B.STATUS = 'DONE'
GROUP BY U.USER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES;
** 순서 기억하기!!
SELECT
FROM
JOIN - ON
WHERE
GROUP BY
HAVING : WHERE과는 달리 이미 그룹된 것들을 조건을 설정한다!
ORDER!
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE YEAR(START_DATE) = 2022 AND MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5
)
AND YEAR(START_DATE) = 2022 AND MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY MONTH, CAR_ID
HAVING COUNT(CAR_ID) > 0
ORDER BY MONTH, CAR_ID DESC
- 서브 쿼리를 활용해 보았다!! 훨씬 편함
SQL 서브쿼리(Sub Query) 예제 - select절, from절, where절 (tistory.com)
-> 이 포스트로 공부하였다.
특히, WHERE절 서브쿼리는 많은 경우에 쓰이므로 형식을 대략 알아두는 것이 좋은 것 같다
SELECT *
FROM TABLE
WHERE col1 IN (SELECT col1 FROM TABLE WHERE~~)
'디지털 > 코딩테스트' 카테고리의 다른 글
[프로그래머스 고득점 키트 - 해시] Level2 - 전화번호 목록 (0) | 2023.03.23 |
---|---|
[프로그래머스] SQL- STRING, DATE (0) | 2022.11.06 |
[프로그래머스 Lv0] 최빈값 구하기 (0) | 2022.10.27 |
[프로그래머스] SQL - ISNULL 모음 (0) | 2022.10.14 |
[프로그래머스]-SQL MAX, MIN 모음 (0) | 2022.10.14 |