SQL 계속 안하다가 다 까먹을 것 같아서 leetcode라도 풀어야겠다.
Input:
| sell_date | product |
|---|---|
| 2020-05-30 | Headphone |
| 2020-06-01 | Pencil |
| 2020-06-02 | Mask |
| 2020-05-30 | Basketball |
| 2020-06-01 | Bible |
| 2020-06-02 | Mask |
| 2020-05-30 | T-Shirt |
Output:
| sell_date | num_sold | products |
|---|---|---|
| 2020-05-30 | 3 | Basketball,Headphone,T-shirt |
| 2020-06-01 | 2 | Bible,Pencil |
| 2020-06-02 | 1 | Mask |
GROUP_CONCAT
SELECT column, GROUP_CONCAT(values) FROM sample GROUP BY columncolumn은 그룹화의 "기준"이되는 컬럼이다. SELECT 문에 GROUP_CONCAT() 이라고 쓰면 그룹화해서 한 줄에 values를 뽑아낼 수 있다.
SELECT sell_date, COUNT( DISTINCT product ) AS num_sold,
GROUP_CONCAT(DISTINCT product ORDER BY product ASC) AS products
FROM activities AS ac
GROUP BY sell_date
GROUP_CONCAT 안에 표현되는 애들한테 정렬 순서를 넣고 싶다면 ( )괄호 안에 ORDER BY 구문을 넣어준다.
지금 input 테이블에는 MASK가 중복으로 들어가 있어서 DISTINCT를 계속 써줘야 하는 게 매우 귀찮다...
ASC 뒤에 seperator ','를 넣을 수도 있다.
짜란.
