SELECT P.PRODUCT_CODE,
SUM(O.SALES_AMOUNT) * P.PRICE AS SALES
FROM PRODUCT P
INNER JOIN OFFLINE_SALE O ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY 1
ORDER BY 2 DESC, 1
SELECT YEAR(OS.SALES_DATE) AS YEAR,
MONTH(OS.SALES_DATE) AS MONTH,
COUNT(DISTINCT OS.USER_ID) AS PUCHASED_USERS,
ROUND((COUNT(DISTINCT OS.USER_ID)) / (SELECT COUNT(DISTINCT USER_ID) FROM USER_INFO WHERE YEAR(JOINED) = 2021), 1) AS PUCHASED_RATIO
FROM USER_INFO UI
INNER JOIN ONLINE_SALE OS ON UI.USER_ID = OS.USER_ID
WHERE YEAR(UI.JOINED) = 2021
GROUP BY 1, 2
ORDER BY 1, 2
SELECT 절에서 연산을 할 때 SELECT절 서브쿼리를 써본적은 처음이다. 서브쿼리로 들어간 절은 전체 회원수를 집계해야하는 것이기 때문에 월 조건이 걸려서는 안되므로 위와 같이 쿼리를 작성하였음을 기억하자.
SELECT A.APNT_NO,
P.PT_NAME,
P.PT_NO,
A.MCDP_CD,
D.DR_NAME,
A.APNT_YMD
FROM APPOINTMENT A
INNER JOIN PATIENT P ON A.PT_NO = P.PT_NO
INNER JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID
WHERE DATE_FORMAT(A.APNT_YMD, '%Y-%m-%d') = '2022-04-13' AND A.MCDP_CD = "CS" AND A.APNT_CNCL_YN = "N"
ORDER BY A.APNT_YMD
조인을 할 때는 key를 잘 보자!
SELECT ORDER_ID,
PRODUCT_ID,
DATE_FORMAT(OUT_DATE, '%Y-%m-%d') as OUT_DATE,
CASE
WHEN OUT_DATE <= '2022-05-01' THEN "출고완료"
WHEN OUT_DATE > '2022-05-01' THEN "출고대기"
ELSE "출고미정"
END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID
새로운 컬럼을 생성해서 조건별로 값을 출력해야 한다면 SELECT절 CASE WHEN문을 기억하자!
SELECT ANIMAL_ID,
NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
SELECT ANIMAL_ID,
NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = "Dog" and
(NAME LIKE '%EL%' OR NAME LIKE '%el%')
ORDER BY NAME
문자열 안에 들어 있는 문자를 찾고 싶다면 컬럼 LIKE '%'를 쓰면 된다. 이따 %는 어떤 것도 봐도 된다는 의미로
로 기억하면 쉬울것이다!
SELECT ANIMAL_ID,
NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN "O"
WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN "O"
ELSE "X"
END AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
SELECT AI.ANIMAL_ID,
AI.NAME
FROM ANIMAL_INS AI
INNER JOIN ANIMAL_OUTS AO ON AI.ANIMAL_ID = AO.ANIMAL_ID
GROUP BY AI.ANIMAL_ID
ORDER BY (AO.DATETIME - AI.DATETIME) DESC
LIMIT 2
날짜 계산이다. 보호기간이 가장 오래된 동물을 찾는 것이므로 ORDER BY절에 조건을 두면 된다.
SELECT ANIMAL_ID,
NAME,
DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY,
COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY
[7주차] 리트코드: Day5 ~ Day9(1407, 1158) (0) | 2022.12.12 |
---|---|
[6주차]리트코드: day1 ~ day4 (0) | 2022.12.08 |
[4주차] 프로그래머스: GROUP BY/ IS NULL/ JOIN (0) | 2022.11.22 |
[3주차] 프로그래머스: SUM, MAX, MIN / GROUP BY (1) | 2022.11.22 |
[2주차] 프로그래머스, SELECT/ SUM,MIN,MAX 문제풀이 (0) | 2022.11.11 |