dev

SQL

SQL

Wonny (워니)
Wonny (워니)·생성일 2021년 01월 11일 07:58·마지막 수정일 2021년 01월 14일 10:55

주 단위로 그룹핑하기

DATE_FORMAT에서 제공하는 Year+Week를 사용하는 경우 해가 넘어갈 때 해에 따라 분리되어 집계된다. 그러므로 해당 주의 첫 번째 날을 기준으로 한 주를 묶는 로직이 필요하다.

SELECT FROM_DAYS(TO_DAYS(sales_time) - MOD(TO_DAYS(sales_time) -1, 7)) AS week_beginning, SUM(gross) AS total, COUNT(*) AS transactions FROM sales GROUP BY FROM_DAYS(TO_DAYS(sales_time) - MOD(TO_DAYS(sales_time) -1, 7)) ORDER BY FROM_DAYS(TO_DAYS(sales_time) - MOD(TO_DAYS(sales_time) -1, 7))

만일 월요일을 주의 첫 번째 요일로 하고 싶다면 -1 대신 -2를 넣어주면 된다.

그룹핑 했을 때 문자열 컬럼에 있는 값을 하나의 문자열로 묶어서 보여주기

데이터 요청을 받다보면 각 유저가 어떤 경로로 가입했는지 등과 같이 하나의 row에 여러 row에 있는 문자열 값을 하나의 문자열로 합쳐서 보여줘야 하는 경우가 생긴다. SELECT 절에서 아래 쿼리를 사용하면 설정한 구분자로 묶여서 나온다. (ex: A, B, C)

GROUP_CONCAT(DISTINCT c.string_data separator ", ")
© 2020 Wonny.