[SQL] 한 줄에 여러 개 - GROUP CONCAT

박진우·2024년 1월 21일

1484. Group Sold Products

SQL 계속 안하다가 다 까먹을 것 같아서 leetcode라도 풀어야겠다.

Input:

sell_dateproduct
2020-05-30Headphone
2020-06-01Pencil
2020-06-02Mask
2020-05-30Basketball
2020-06-01Bible
2020-06-02Mask
2020-05-30T-Shirt

Output:

sell_datenum_soldproducts
2020-05-303Basketball,Headphone,T-shirt
2020-06-012Bible,Pencil
2020-06-021Mask

어... 뭐야.. 한 줄에 여러 개 어떻게 뽑는 거더라...




GROUP_CONCAT

SELECT column, GROUP_CONCAT(values)
FROM sample
GROUP BY column

column은 그룹화의 "기준"이되는 컬럼이다. 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 ','를 넣을 수도 있다.



    짜란.

0개의 댓글