sql 실행순서 때문에 너무 헷갈린다.
6단계
1. where
2. from
3. group by
4. having 중복인 행 출력시 having 조건 활용 , group by 까지 한 이후 having 으로 최종 조건 적용
5. select 위에 조건을 만족할시 추출
6. order by select 까지 마지막으로 한 다음 정렬함
https://myjamong.tistory.com/172
<나의 첫 답안>
SELECT distinct USER_ID,PRODUCT_ID /*어짜피 user_id와 product_id는 1:1관계이다*/
from ONLINE_SALE
group by USER_ID,PRODUCT_ID
order by USER_ID asc, PRODUCT_ID desc
--> 답안의 문제점!!! having 조건을 활용해서 중복인 행만 출력했어야한다!! 이렇게 하면 재구매 안한 회원도 출력되는 효과
<최종 정답>
SELECT USER_ID,PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(online_sale_id) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
<최종정답2>
select
user_id, product_id
# , count(*)
from online_sale
group by user_id, product_id
having count(*) >= 2
order by 1 asc, 2 desc
<최종정답3>
SELECT distinct USER_ID,PRODUCT_ID
from ONLINE_SALE
group by USER_ID,PRODUCT_ID
having count(*)>=2
order by 1 asc, 2 desc
참고할 포스트가 있어 공유한다.
'「SQL초급떼기' 카테고리의 다른 글
[프로그래머스고득점kit]코딩테스트 연습JOIN없어진 기록 찾기(level3) (0) | 2023.03.30 |
---|---|
[프로그래머스고득점kit] 코딩테스트 연습JOIN오랜 기간 보호한 동물(1)(level 3) (0) | 2023.03.30 |
[프로그래머스sql고득점kit] 코딩테스트 연습JOIN상품 별 오프라인 매출 구하기(level 2) (0) | 2023.03.30 |
[SQL day1] 해커랭크 - SKILLS(Basic) + DIFFICULTY(Easy) ① (0) | 2023.02.01 |
[20220118]SQL 기초 떼기 1일차 (0) | 2022.01.18 |
댓글