Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- ๋ฐฐ์ด
- ๋ณ์
- Ajax
- SQL
- Update
- JavaScript
- ๋ฆฌ๋ ์ค
- ์ฝํ
- ๋ช ๋ น์ด
- post๋ฐฉ์
- select
- ๋ฐฑํฑ
- ๋์ปค
- ์ธ๋ผ์ธ๋ทฐ
- ๋์
- like
- DATE_FORMAT
- MySQL
- ๋์ ํ ์ด๋ธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- Spring
- order by
- ์ปจํธ๋กค๋ฌ
- ํจ์
- ํ ์ด๋ธ
- JS
- optionํ๊ทธ
- oracle
- JSP
Archives
- Today
- Total
bom's happy life
[SQL ์ฝํ ] ์ฌ๊ตฌ๋งค๊ฐ ์ผ์ด๋ ์ํ๊ณผ ํ์ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ ๋ณธ๋ฌธ
Algorithm๐/ํ๋ก๊ทธ๋๋จธ์ค
[SQL ์ฝํ ] ์ฌ๊ตฌ๋งค๊ฐ ์ผ์ด๋ ์ํ๊ณผ ํ์ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ
bompeach 2023. 8. 12. 16:31Q)
ONLINE_SALE ํ ์ด๋ธ์์ ๋์ผํ ํ์์ด ๋์ผํ ์ํ์ ์ฌ๊ตฌ๋งคํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ์ฌ, `์ฌ๊ตฌ๋งคํ ํ์ ID์ ์ฌ๊ตฌ๋งคํ ์ํ ID๋ฅผ ์ถ๋ ฅ` ํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ํ์ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ ํ์ ID๊ฐ ๊ฐ๋ค๋ฉด ์ํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
A1)
-- MYSQL
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC
--์ฟผ๋ฆฌํด์
-- ONLINE_SALE ํ
์ด๋ธ์์
SELECT USER_ID, PRODUCT_ID
-- ์ฌ์ฉ์ ID์ ์ ํ ID๋ฅผ ์ ํํฉ๋๋ค.
FROM ONLINE_SALE
-- ONLINE_SALE ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
GROUP BY USER_ID, PRODUCT_ID
-- ์ฌ์ฉ์ ID์ ์ ํ ID๋ก ๊ทธ๋ฃนํํฉ๋๋ค.
-- ์ด๋ ๊ฐ ์ฌ์ฉ์๊ฐ ๊ฐ ์ ํ์ ์ฌ๋ฌ ๋ฒ ๊ตฌ๋งคํ ๊ฒฝ์ฐ์ ๋ํ ๊ทธ๋ฃน์ ์์ฑํฉ๋๋ค.
HAVING COUNT(*) > 1
-- ๊ทธ๋ฃน ๋ด์์ ํ์ ์๊ฐ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ ๋ํด์๋ง ํํฐ๋งํฉ๋๋ค.
-- ์ฆ, ๋์ผํ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ ํ์ 2๋ฒ ์ด์ ๊ตฌ๋งคํ ๊ทธ๋ฃน๋ง์ ์ ํํฉ๋๋ค.
ORDER BY USER_ID ASC, PRODUCT_ID DESC
-- ์ฌ์ฉ์ ID๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋, ์ ํ ID๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
-- ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ID๊ฐ ์ฆ๊ฐํ๋ ์์๋ก ์ ๋ ฌ๋๋ฉฐ, ๋์ผํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ์ ํ ID๊ฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
A2) ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ
-- MYSQL
SELECT DISTINCT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
WHERE (USER_ID, PRODUCT_ID) IN (
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
)
ORDER BY USER_ID ASC, PRODUCT_ID DESC;