首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中同时使用SUM和MAX函数

如何在SQL中同时使用SUM和MAX函数
EN

Stack Overflow用户
提问于 2022-10-27 19:27:48
回答 1查看 34关注 0票数 0
代码语言:javascript
复制
SELECT DISTINCT 
    G.NAME AS GENRE, 
    COUNT(T.NAME) AS TotalTransactions, 
    f.country, SUM(il.unitprice) AS Spent
FROM 
    final F
JOIN 
    CUSTOMER C ON C.CUSTOMERID = F.CUSTOMERID
JOIN 
    INVOICE I ON I.CUSTOMERID = C.CUSTOMERID
JOIN 
    INVOICELINE IL ON IL.INVOICEID = I.INVOICEID
JOIN 
    TRACK T ON T.TRACKID = IL.TRACKID
JOIN 
    GENRE G ON G.GENREID = T.GENREID
GROUP BY 
    G.NAME, c.country
ORDER BY 
    G.NAME;

期望产出:

代码语言:javascript
复制
 GENRE           TotalTransactions   Country   Spent
 ----------------------------------------------------
 Alternative              5          USA         4.95
 Alternative & Punk      36          Canada     35.64

例如,我只想选择另类音乐,因为他们花在另类音乐上的钱最多。

我尝试使用MAX(SUM()),但这给了我一个组错误。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-10-27 20:04:32

我认为一种更好的方法是对每种类型的和进行子查询,然后再查询一次,将每种类型的总数排序到前一位。

代码语言:javascript
复制
;WITH Normalized AS
(
    SELECT  
        G.NAME AS GENRE, 
        COUNT(T.NAME) AS TotalTransactions, 
        f.country, SUM(il.unitprice) AS Spent       
    FROM 
        final F
    JOIN 
        CUSTOMER C ON C.CUSTOMERID = F.CUSTOMERID
    JOIN 
        INVOICE I ON I.CUSTOMERID = C.CUSTOMERID
    JOIN 
        INVOICELINE IL ON IL.INVOICEID = I.INVOICEID
    JOIN 
        TRACK T ON T.TRACKID = IL.TRACKID
    JOIN 
        GENRE G ON G.GENREID = T.GENREID
    GROUP BY 
        G.NAME, c.country
)
,Ranked AS
(
    SELECT
        *,
        RANK() OVER (PARTITION BY GENRE ORDER BY Spent DESC) AS GenreRank
    FROM
        Normalized  
)
SELECT
    *
FROM
    Ranked  
WHERE
    GenreRank = 1
ORDER BY 
    [NAME]; 

甚至更好

代码语言:javascript
复制
;WITH Normalized AS
(
   ...
)
SELECT
    *
FROM
   Normalized   
HAVING RANK() OVER (PARTITION BY GENRE ORDER BY Spent DESC) = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74227341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档