๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
๋ฆฌํธ์ฝ๋ Problems, https://leetcode.com/problemset/all/์์ ๋ฐํ๋๋ค.
โ๋ฌธ์
https://leetcode.com/problems/customers-who-bought-all-products/
Table: Customer
Table: Product
Write an SQL query to report the customer ids from the Customer table that bought all the products in the Product table.
Return the result table in any order.
The query result format is in the following example.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
Product ํ ์ด๋ธ์ ์๋ ๋ชจ๋ product๋ฅผ ๊ตฌ๋งคํ ๊ณ ๊ฐ์ id๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค.
์ด๋ฒ ๋ฌธ์ ์์๋ MySQL์์ ์ ๊ณตํ๋ ์๋ก์ด ๋ฌธ์์ด ํฉ์น๋ ๋ฌธ๋ฒ GROUP_CONCAT()์ ์ฌ์ฉํ๋ค.
โ ๋ฌธ๋ฒ :
GROUP_CONCAT(์ปฌ๋ผ๋ช ORDER BY ์ปฌ๋ผ๋ช SEPARATOR ๊ตฌ๋ถ์)
· SEPARATOR ๊ธฐ๋ณธ๊ฐ์ ','
· CONCAT ํ ์ปฌ๋ผ ๋ฐ์ดํฐ์ ๋ํด ์ ๋ ฌ ์กฐ๊ฑด์ ๋ถ์ฌํ๊ณ ์ถ์ ๋, ORDER BY ์ปฌ๋ผ๋ช ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
โ Customerํ ์ด๋ธ์์ id๋ณ๋ก ์ฐ product_key๋ฅผ group_concat์ ํ์ฉํด์ ์ฅ๋ฐ๊ตฌ๋์ฒ๋ผ pd_keys ์ปฌ๋ผ์ ๋ด๊ณ
โก id๋ณ๋ก ๋ด์ pd_keys๊ฐ Product ํ ์ด๋ธ์ product_key์ปฌ๋ผ ๊ฐ์ ํฉ์น pd_keys ์ปฌ๋ผ๊ณผ ๋์ผํ ์ง¹ ๋น๊ตํด์ ๋์ผํ ๊ณ ๊ฐ์ ID๋ง ์ถ๋ ฅํ๋ค.
SELECT customer_id
FROM (
SELECT customer_id, GROUP_CONCAT(DISTINCT product_key ORDER BY product_key SEPARATOR ',') AS pd_keys
FROM Customer
GROUP BY 1) T1
WHERE pd_keys = (SELECT GROUP_CONCAT(product_key ORDER BY product_key SEPARATOR ',') AS pd_keys
FROM Product)
;
¹ product_key๊ฐ ๋ชจ๋ ์๋ค๋ ๊ฒ = ๋ชจ๋ ์ํ์ ๊ตฌ๋งคํ๋ค. ๋ ์๋ฏธ
<์ฐธ๊ณ ์๋ฃ>
์ฐธ๊ณ ๋งํฌ์์ Oracle์์ ๋์ผํ ์ญํ ์ ํ๋ listagg ์ ๋ํด์๋ ๊ณต๋ถํ ์ ์๋ค.
โ ๊ฐ์ธํ๊ณ
๋ฌธ์ ํ์ด์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋๋ฒ์ด๋ ์ฌ์ฉํด์ ์ฟผ๋ฆฌ ์คํ์ ์๊ฐ์ด ๊ฑธ๋ฆด ๋ฏ ํ๋ค.
'Growth ๐ณ > Practice ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 1158. Market Analysis I (0) | 2023.06.08 |
---|---|
[LeetCode] 1070. Product Sales Analysis III (0) | 2023.05.22 |
[LeetCode] 608. Tree Node (0) | 2023.05.16 |
[LeetCode] 602. Friend Requests II: Who Has the Most Friends (0) | 2023.05.12 |
[LeetCode] 601. Human Traffic of Stadium (0) | 2023.05.11 |