MYSQL 그룹별 RANK함수 구현하기
요구사항 2020년1월~2021년 현재까지 주문상태는 결제완료 상점코드별 월단위 판매금액 순 100위까지의 고객의 정보를 추출 판매금액이 동일할 경우 같은 등수로 처리 추출정보 : 상점코드, 년월, 고객명, 판매금액, 판매수량 환경 : AWS ARORA DB 문제 : RANK() 함수가 지원되지 않아 직접 구현해야 함 SELECT * FROM ( SELECT A.* , CASE @SHOP WHEN SHOP_NO THEN CASE @MON WHEN MON THEN IF(@SALE_AMT > SALE_AMT, @RANK := @RANK + 1, @RANK) ELSE @RANK := 1 END ELSE @RANK := 1 END AS RNK , @SHOP := SHOP_NO , @MON := MON , @SA..
2021. 3. 16.
ROLLUP 총계만 필요할 때
ROLLUP을 사용하면 소계, 총계가 나온다.그중 총계만 필요할 때 아래 처럼 사용한다.SELECT ISNULL(COL1, '') COL1 ,ISNULL(COL2, '총계') COL2 ,COUNT(COL2) COLCNT FROM TBL_ROOT A GROUP BY ROLLUP(COL1, COL2) HAVING GROUPING(COL1) = 1 OR GROUPING(COL2)=0 위처럼 사용할 수도 있지만 아래처럼 사용해도 된다.SELECT ISNULL(COL1, '') COL1 ,ISNULL(COL2, '총계') COL2 ,COUNT(COL2) COLCNT FROM TBL_ROOT A GROUP BY ROLLUP( ( COL1, COL2 ) ) 아래 쿼리처럼 괄호를 한번 더 싸주면 된다.
2014. 12. 3.
MSSQL 피벗 사용하기
집계 쿼리 시 빈번하게 사용되는 피벗 쿼리MSSQL에서 피벗은 2005버전 이상부터 사용 가능하다. 하위 버전은 case when으로 구현해야 한다. 동적 피벗을 만들어서 사용하기도 하니 알아두도록 하자. -- Pivot table with one row and five columns SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, [0], [1], [2], [3], [4] FROM (SELECT DaysToManufacture, StandardCost FROM Production.Product) AS SourceTable PIVOT ( AVG(StandardCost) FOR DaysToManufacture IN ([0], [1], [2], [3], [..
2014. 7. 10.