SQL

[SQL] Find the Nth group (DENSE_RANK / OVER / SUBQUERY)

beie 2024. 11. 24. 12:14

<1> 

-- Mainquery : SLECT shipment_id, total_weight FROM (subquery) subquery_name WHERE rank=3
-- Subquery : SELECT shipment_id, a, b FROM amazon_shipment GROUP BY shipment_id 

SELECT shipment_id, total_weight, heavy_num
FROM(
    SELECT shipment_id, 
        SUM(weight) AS total_weight,
        DENSE_RANK() OVER (ORDER BY SUM(weight) DESC) AS heavy_num
    FROM amazon_shipment
    GROUP BY shipment_id) ranked_shipment
WHERE heavy_num=3;

 

* DENSE_RANK() OVER(_________

      1) ORDER BY : (essential) 순위를 매길 때

      2) PARTITION BY : (option) 그룹별로 순위를 나누고 싶을 때

 

*Query Order

     SUB Queries > MAIN Queries

     FROM > WHERE > HAVING > SELECT > ORDER BY > LIMIT