728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이)
SELECT distinct a.user_id, a.product_id
from online_sale as a join online_sale as b
on a.user_id=b.user_id and a.product_id=b.product_id
where a.sales_date != b.sales_date
order by user_id, product_id desc;
self join으로 해보았다! self join은 처음 활용해봤는데 오묘하다...
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC;
또한, group by를 사용해서 풀 수도 있더라..
SELECT USER_ID, PRODUCT_ID,count(*)
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID;
이 sql문을 작성해보면, 다음과 같은 결과가 나온다.
USER_ID | PRODUCT_ID | count(*) |
2 | 21 | 1 |
2 | 26 | 1 |
2 | 30 | 1 |
4 | 27 | 1 |
5 | 12 | 1 |
7 | 1 | 1 |
7 | 5 | 1 |
12 | 7 | 1 |
13 | 27 | 1 |
14 | 18 | 1 |
15 | 12 | 2 |
19 | 26 | 1 |
20 | 24 | 1 |
22 | 8 | 1 |
23 | 7 | 1 |
23 | 26 | 1 |
24 | 2 | 1 |
27 | 3 | 1 |
29 | 15 | 1 |
29 | 26 | 1 |
34 | 6 | 1 |
35 | 8 | 1 |
37 | 1 | 1 |
41 | 1 | 1 |
42 | 9 | 1 |
42 | 19 | 1 |
42 | 30 | 1 |
43 | 6 | 1 |
45 | 15 | 1 |
46 | 1 | 1 |
50 | 24 | 1 |
52 | 15 | 1 |
53 | 12 | 1 |
54 | 11 | 1 |
55 | 30 | 1 |
56 | 28 | 1 |
57 | 11 | 1 |
57 | 25 | 1 |
58 | 11 | 1 |
58 | 26 | 1 |
59 | 14 | 1 |
60 | 15 | 1 |
61 | 20 | 1 |
62 | 29 | 1 |
65 | 19 | 1 |
66 | 4 | 1 |
66 | 21 | 1 |
68 | 1 | 1 |
68 | 6 | 1 |
68 | 15 | 1 |
70 | 27 | 1 |
72 | 12 | 1 |
73 | 8 | 1 |
73 | 21 | 1 |
73 | 25 | 1 |
74 | 9 | 1 |
78 | 4 | 1 |
78 | 6 | 1 |
78 | 19 | 1 |
81 | 20 | 1 |
84 | 8 | 1 |
87 | 24 | 1 |
88 | 28 | 1 |
90 | 24 | 1 |
91 | 21 | 1 |
92 | 26 | 1 |
93 | 3 | 1 |
98 | 3 | 1 |
99 | 27 | 1 |
101 | 9 | 1 |
102 | 18 | 1 |
103 | 29 | 1 |
108 | 27 | 1 |
109 | 5 | 1 |
109 | 13 | 1 |
110 | 9 | 1 |
111 | 30 | 1 |
113 | 15 | 1 |
114 | 1 | 1 |
114 | 12 | 1 |
117 | 7 | 1 |
117 | 12 | 1 |
117 | 22 | 1 |
118 | 1 | 1 |
119 | 12 | 2 |
120 | 4 | 1 |
120 | 29 | 1 |
121 | 14 | 1 |
123 | 14 | 1 |
123 | 25 | 1 |
126 | 9 | 1 |
126 | 21 | 1 |
127 | 29 | 1 |
131 | 19 | 1 |
133 | 17 | 1 |
134 | 18 | 1 |
134 | 22 | 1 |
134 | 26 | 1 |
138 | 4 | 1 |
139 | 9 | 1 |
140 | 4 | 1 |
143 | 15 | 1 |
145 | 8 | 1 |
149 | 8 | 1 |
151 | 26 | 1 |
152 | 7 | 1 |
154 | 7 | 1 |
154 | 29 | 1 |
157 | 30 | 1 |
160 | 23 | 1 |
162 | 30 | 1 |
163 | 6 | 1 |
170 | 24 | 1 |
170 | 25 | 1 |
177 | 9 | 1 |
180 | 30 | 1 |
183 | 14 | 1 |
184 | 24 | 1 |
189 | 25 | 1 |
190 | 25 | 1 |
처음에는 어떻게 이렇게 가능한거지.. 이해가 안 갔는데, 다음 블로그르 참고하면 이해하기가 좀 쉬울것이다!
sql group by 2개 이상 : 나눌 기준을 select 절에도 똑같이 적어주면 된다.
요새 롯데 자이언츠의 상승세가 무섭습니다. 이번 년도에 가을야구 갈 거 같습니다. 초반부터 야구 이야기를 해서 죄송합니다. group by에서 2개 이상의 속성으로 그룹화를 하고 싶을 때 어떻게 해
codingdog.tistory.com
728x90
'SQL > 프로그래머스' 카테고리의 다른 글
프로그래머스 최댓값 구하기(MySQL) (0) | 2023.04.24 |
---|---|
프로그래머스 가격대 별 상품 개수 구하기(MySQL) (0) | 2023.04.06 |
프로그래머스 3월에 태어난 여성 회원 목록 출력하기(MySQL) (0) | 2023.04.05 |
프로그래머스 12세 이하인 여자 환자 목록 출력하기(MySQL) (0) | 2023.04.05 |
프로그래머스 평균 일일 대여 요금 구하기(MySQL) (0) | 2023.04.04 |