통계 쿼리를 공부하면서 출력된 결과 테이블의 행과 열의 위치를 바꾸는 피벗에 대해 공부하였습니다.
실습은 MariaDB를 사용하였습니다.
메뉴, 매장, 주문일시 세개의 컬럼을 가진 tb_order를 만들었습니다.
이런식으로 데이터를 넣어주었습니다.
날짜별, 매장별 판매 갯수를 구하기 위해서 아래와 같은 쿼리문을 사용하였습니다.
위의 쿼리문을 실행하면
이와 같은 통계를 얻을 수 있습니다.
또한, WITH ROLLUP 함수를 사용하여 매장별 전체 합계를 구하였습니다.
WITH ROLLUP 함수란,
그룹별로 합계를 한 번에 구할 때 사용합니다.
GROUP BY를 사용하면 GROUP BY 뒤에 나오는 컬럼 별로 합계를 구해주는데 이때, 항목별 합계에 전체 합계가 같이 나오게 해주는 것입니다.
그래서 GROUP BY 뒤 기준들의 순서에 따라 WITH ROLLUP의 결과도 달라집니다.
위의 결과에서 행과열을 바꾸기 위해서
이런 쿼리를 작성하였습니다.
아까 WITH ROLLUP을 통해 출력된 ORDER_DT의 값이 NULL임으로 IS NULL을 사용하였습니다.
실행결과는 아래와 같습니다.
그래서 다른 매장들도 위의 쿼리에 UNION을 사용하여 합쳐주었습니다.
UNION을 사용할때는 첫번째 SELECT문에서 컬럼명을 모두 정해주었기 때문에 두번째부터는 ALIAS를 사용하지 않아도 됩니다.
모든 매장별로 SELECT문을 작성한 뒤 UNION을 모두 해주면
이렇게 위에서 실행했던 결과의 행과 열이 바뀐 결과 값을 얻을 수 있습니다.
[MariaDB] 피봇(pivot) 사용하기2 (1) | 2022.01.02 |
---|