SELECT
1. 재구매가 일어난 상품과 회원 리스트 구하기
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*)>=2
ORDER BY USER_ID, PRODUCT_ID DESC;
USER_ID와 PRODUCT_ID의 쌍이 같은 행의 갯수를 구할때 GROUP_BY (USER_ID, PRODUCT_ID) 해주면 이 두개의 쌍이 같은것끼리 묶어줌 (*주의 : 쌍으로 묶은 USER_ID, PRODUCT_ID 쌍만 SELECT로 출력할수 있음)
(관련문제)
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 오프라인/온라인 판매 데이터 통합하기
select date_format(sales_date, '%Y-%m-%d') as sales_date, product_id, user_id, sales_amount
from online_sale
where sales_date >= '2022-03-01' and sales_date < '2022-04-01'
union all
select date_format(sales_date, '%Y-%m-%d') as sales_date, product_id, NULL as user_id, sales_amount
from offline_sale
where sales_date >= '2022-03-01' and sales_date < '2022-04-01'
order by sales_date, product_id, user_id
두개의 표의 COLUMN 갯수를 맞추고 UNION ALL하면 위, 아래 SELECT한 표가 합쳐진다
(관련문제)
https://school.programmers.co.kr/learn/courses/30/lessons/131537
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SUM, MAX, MIN
1. 중복 제거하기
SELECT COUNT(DISTINCT(NAME)) FROM ANIMAL_INS
이렇게 하면 NAME의 중복을 다 없에고 COUNT를 함
GROUP BY
1. 식품분류별 가장 비싼 식품의 정보 조회하기 ★
SELECT CATEGORY,PRICE,PRODUCT_NAME FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN
(SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY)
AND CATEGORY IN ("과자","국","김치","식용유")
ORDER BY PRICE DESC;
카테고리 별로 GROUP BY 하는데 MAX(PRICE)인 COLUMN을 출력해야 할때 WHERE절안에 CATEGORY,PRICE 쌍으로 값을 SELECT 해서 MAX(PRICE)인 COLUMN을 찾을수 있다
(관련문제)
https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
https://school.programmers.co.kr/learn/courses/30/lessons/131123
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 년, 월, 성별 별 상품 구매 회원 수 구하기
SELECT YEAR(SALES_DATE)"YEAR", MONTH(SALES_DATE)"MONTH", gender "GENDER",COUNT(DISTINCT(S.USER_ID)) AS "USERS"
FROM ONLINE_SALE S
INNER JOIN USER_INFO U
ON S.USER_ID = U.USER_ID
WHERE gender IS NOT NULL
GROUP BY YEAR(SALES_DATE),MONTH(SALES_DATE),gender
ORDER BY YEAR(SALES_DATE), MONTH(SALES_DATE),gender
GROUP BY에 여러개 기준을 넣으면 그 기준이 다 만족하는 GROUP이 생성된다
(이 코드에서는 YEAR(SALES_DATE),MONTH(SALES_DATE),gender 가 같은것이 한 그룹인거임)
(관련문제)
https://school.programmers.co.kr/learn/courses/30/lessons/131532
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
3. 입양 시각 구하기(2)
SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR,
(SELECT COUNT(HOUR(DATETIME))
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)=@HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;
@HOUR 변수를 정해놓고 @HOUR := @HOUR +1 하면서 표와 관계없이 변수를 1씩 증가시키며 출력
JOIN (표 2개가 쌍이 안맞는경우를 생각 잘해야함)
1. 5월 식품들의 총매출 조회하기 (표 1개에서 쌍이 안맞아서 행이 숨어있는 경우)
SELECT O.PRODUCT_ID,PRODUCT_NAME,SUM(AMOUNT*PRICE) FROM FOOD_ORDER O
RIGHT JOIN FOOD_PRODUCT P
ON P.PRODUCT_ID=O.PRODUCT_ID
WHERE MONTH(O.PRODUCE_DATE)=5 AND YEAR(O.PRODUCE_DATE)=2022
GROUP BY PRODUCT_ID
ORDER BY SUM(AMOUNT*PRICE) DESC,P.PRODUCT_ID
숨어 있는거 고려해서 JOIN을 함
(관련문제)
https://school.programmers.co.kr/learn/courses/30/lessons/131117
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 주문량이 많은 아이스크림들 조회하기(JOIN안에 SELECT문)
이해 아직 안됨
3. 그룹별 조건에 맞는 식당 목록 출력하기(JOIN안에 SELECT문)
이해 아직 안됨
4. 상품을 구매한 회원 비율 구하기
이해 아직 안됨
'PS 연습' 카테고리의 다른 글
[완전 탐색 + 백트래킹] 백준 문제 풀이 - 6603 로또 (0) | 2022.07.30 |
---|---|
[완전 탐색] 백준 문제 풀이 - 10971 외판원 순회 2 (0) | 2022.07.29 |
[재귀] 백준 문제 풀이 - 17478 재귀함수가 뭔가요? (0) | 2022.07.20 |
[완전 탐색] 백준 문제 풀이 - 15650 N과 M (2) (0) | 2022.07.17 |
[완전 탐색] 백준 문제 풀이 - 15649 N과 M (1) (0) | 2022.07.16 |