[SQL Kit] SELECT & GROUP BY

Yeojin·2023년 12월 7일
0

programmers

목록 보기
2/5

1. 즐겨찾기가 가장 많은 식당 정보 출력하기


WITH MAX_DATA AS 
 (SELECT MAX(FAVORITES) AS MAX_FAVORITES
       , FOOD_TYPE
    FROM REST_INFO
   GROUP BY FOOD_TYPE)
SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
  FROM REST_INFO A
  JOIN MAX_DATA B
    ON A.FOOD_TYPE = B.FOOD_TYPE
   AND A.FAVORITES = B.MAX_FAVORITES
 ORDER BY FOOD_TYPE DESC
 
 
SELECT FOOD_TYPE
     , REST_ID
     , REST_NAME
     , FAVORITES 
FROM (
       SELECT FOOD_TYPE
            , REST_ID
            , FAVORITES
            , REST_NAME 
            , RANK() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) RANK 
         FROM REST_INFO
      ) 
 WHERE RANK = 1 
 ORDER BY FOOD_TYPE DESC



2. 고양이와 개는 몇 마리 있을까


SELECT ANIMAL_TYPE
     , COUNT(ANIMAL_TYPE) AS COUNT
  FROM ANIMAL_INS 
 GROUP BY ANIMAL_TYPE
 ORDER BY ANIMAL_TYPE



3. 동명 동물 수 찾기


SELECT NAME
      , COUNT(NAME) AS COUNT
   FROM ANIMAL_INS
  WHERE NAME IS NOT NULL
 HAVING COUNT(NAME) > 1
  GROUP BY NAME
  ORDER BY NAME



4. 년,월,성별 별 상품 구매 회원 수 구하기


SELECT TO_CHAR(SALES_DATE, 'YYYY') AS YEAR
      , TO_CHAR(SALES_DATE, 'MM') AS MONTH
      , B.GENDER
      , COUNT(DISTINCT A.USER_ID) AS USERS
   FROM ONLINE_SALE A
   JOIN USER_INFO B
     ON A.USER_ID = B.USER_ID
  WHERE B.GENDER IS NOT NULL
  GROUP BY TO_CHAR(SALES_DATE, 'YYYY'), TO_CHAR(SALES_DATE, 'MM'), GENDER
  ORDER BY YEAR, MONTH, GENDER
  
  
  SELECT EXTRACT(YEAR FROM O.SALES_DATE) "YEAR"
       , EXTRACT(MONTH FROM O.SALES_DATE) "MONTH" 
       , U.GENDER
       , COUNT(DISTINCT O.USER_ID) "USERS"
    FROM USER_INFO U 
    JOIN ONLINE_SALE O
      ON U.USER_ID = O.USER_ID
   WHERE U.GENDER IS NOT NULL
   GROUP BY EXTRACT(YEAR FROM O.SALES_DATE)
       , EXTRACT(MONTH FROM O.SALES_DATE)
       , U.GENDER
   ORDER BY 1, 2, 3;



5. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기


SELECT CAR_TYPE
     , COUNT(CAR_ID) AS CARS
  FROM CAR_RENTAL_COMPANY_CAR 
 WHERE OPTIONS LIKE '%통풍시트%'
    OR OPTIONS LIKE '%열선시트%'
    OR OPTIONS LIKE '%가죽시트%'
 GROUP BY CAR_TYPE
 ORDER BY CAR_TYPE



6. 조건에 맞는 사용자와 총 거래금액 조회하기


SELECT A.USER_ID
     , A.NICKNAME
     , SUM(B.PRICE) AS TOTAL_SALES
  FROM USED_GOODS_USER A 
  JOIN USED_GOODS_BOARD B
    ON A.USER_ID = B.WRITER_ID
 WHERE B.STATUS = 'DONE'
HAVING SUM(B.PRICE) >= 700000
 GROUP BY USER_ID, NICKNAME
 ORDER BY TOTAL_SALES
 


7. 성분으로 구분한 아이스크림 총 주문량


SELECT B.INGREDIENT_TYPE
     , SUM(A.TOTAL_ORDER) AS TOTAL_ORDER
  FROM FIRST_HALF A
  JOIN ICECREAM_INFO B 
    ON A.FLAVOR = B.FLAVOR
 GROUP BY INGREDIENT_TYPE
 ORDER BY TOTAL_ORDER


8. 카테고리 별 도서 판매량 집계하기

 
 SELECT B.CATEGORY
     , SUM(A.SALES) AS TOTAL_SALES
  FROM BOOK_SALES A
  JOIN BOOK B
    ON A.BOOK_ID = B.BOOK_ID
 WHERE TO_CHAR(A.SALES_DATE, 'YYYYMM') = '202201'
 GROUP BY B.CATEGORY
 ORDER BY CATEGORY



9. 진료과별 총 예약 횟수 출력하기

 
SELECT MCDP_CD AS "진료과 코드"
     , COUNT(DISTINCT PT_NO)  AS "5월예약건수"
FROM APPOINTMENT
WHERE TO_CHAR(APNT_YMD, 'YYYYMM') = '202205'
GROUP BY MCDP_CD
ORDER BY 2, 1



10. 저자 별 카테고리 별 매출액 집계하기

 
 SELECT B.AUTHOR_ID
      , B.AUTHOR_NAME
      , A.CATEGORY
      , SUM(C.SALES * A.PRICE) AS TOTAL_SALES
  FROM BOOK A
  JOIN AUTHOR B
    ON A.AUTHOR_ID = B.AUTHOR_ID
  JOIN BOOK_SALES C
    ON A.BOOK_ID = C.BOOK_ID
 WHERE TO_CHAR(C.SALES_DATE, 'YYYYMM') = '202201'
 GROUP BY B.AUTHOR_ID, B.AUTHOR_NAME, A.CATEGORY
 ORDER BY AUTHOR_ID, CATEGORY DESC



profile
"Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better."

0개의 댓글

관련 채용 정보