簡體   English   中英

在SQL查詢中使用MAX

[英]using MAX in a SQL query

我正在嘗試獲取特定商店中特定雇員的最大數量。 我可以輕松獲得每個員工的人數以及他們在哪個商店工作,但是我只想在每個商店中排名第一。

SELECT Emp_ID || ': ' || First_Name || ' ' || Last_Name AS "Emp. Name",
        Store_Num || ': ' || Store_Name AS "Store",
        COUNT(Emp_ID) AS "Num Rentals"
FROM Employee JOIN rental USING (Emp_ID)
        JOIN store USING (Store_Num)
GROUP BY Emp_ID, First_Name, Last_Name, Store_Num, Store_Name;

Emp. Name            Store                Num Rentals
-------------------- -------------------- -----------
104: Victoria Lee    20: SQ Hill's DVD              4
102: Steve Baker     10: Oakland's DVD              3
103: Lily Evans      10: Oakland's DVD              3
105: Gloria Tremblay 20: SQ Hill's DVD              4
101: Jim Smith       10: Oakland's DVD              5
106: Emma Wesley     30: DVD Hub                    3

6 rows selected.

這將獲取每個員工處理的租金數量以及他們在什么商店工作。 我只想在每個商店都得到最高員工。 結果表應為...

Emp. Name            Store                Num Rentals
-------------------- -------------------- -----------
104: Victoria Lee    20: SQ Hill's DVD              4
105: Gloria Tremblay 20: SQ Hill's DVD              4
101: Jim Smith       10: Oakland's DVD              5
106: Emma Wesley     30: DVD Hub                    3

謝謝您提前提供的所有幫助!

您可以使用分析功能RANK:

select "Emp. Name", "Store", "Num Rentals" FROM
    (SELECT Emp_ID || ': ' || First_Name || ' ' || Last_Name AS "Emp. Name",
            Store_Num || ': ' || Store_Name AS "Store",
            COUNT(Emp_ID) AS "Num Rentals",
            rank() over(partition by Store_Num, Store_Name order by COUNT(Emp_ID) desc) rw
    FROM Employee JOIN rental USING (Emp_ID)
            JOIN store USING (Store_Num)
    GROUP BY Emp_ID, First_Name, Last_Name, Store_Num, Store_Name)
WHERE rw = 1;   

RANK為在PARTITION BY中表示的每個組計算按照ORDER BY expr編碼的每一行的等級(幾行可以具有相同的等級)。

解析函數是在GROUP BY之后計算的

select t."Store", max("Emp. Name") keep (dense_rank first order by "Num Rentals" desc)
  from (SELECT Emp_ID || ': ' || First_Name || ' ' || Last_Name AS "Emp. Name",
            Store_Num || ': ' || Store_Name AS "Store",
            COUNT(Emp_ID) AS "Num Rentals"
    FROM Employee JOIN rental USING (Emp_ID)
            JOIN store USING (Store_Num)
    GROUP BY Emp_ID, First_Name, Last_Name, Store_Num, Store_Name) t;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM