SQL语法帮助:返回已计数组合的最大值

问题描述 投票:0回答:1

想像一下我在表1中有以下数据:

ID  Color   Toy  
1   Red     Car  
2   Red     Truck  
3   Red     Truck  
4   Blue    Car  
5   Blue    Car  
6   Yellow  Airplane

而且我想返回每种颜色的最频繁玩具的最大数量。我该怎么做?

我已经尝试过

SELECT aa.color, aa.toy, max(aa.totalcount) AS maxcount 
FROM (
    Select Color, Toy, count(*) AS totalcount 
    FROM Table 1 GROUP BY Color, Toy
) aa;

由于某种原因,这似乎不起作用。我在做什么错?

这是我得到的错误:

在SELECT子句,HAVING子句或ORDER BY子句中指定的以“ Color”开头的表达式未在GROUP BY子句中指定,或者在SELECT子句,HAVING子句或ORDER BY子句中具有列函数,并且没有指定GROUP BY子句。SQLCODE= -119,SQLSTATE = 42803,DRIVER = 4.25.1301

我想要的期望输出是每种颜色的玩具中最常见的一行,以及玩具/颜色组合的数量:

红色卡车2(非红色汽车)

蓝色汽车2

黄色飞机1

sql count max
1个回答
0
投票

如果使用的是MSSQL,则此查询的GROUP BY和ROW_NUMBER()应该可以解决您的问题。您也可以对其他数据库使用相同的逻辑。

WITH CTE AS(
    SELECT Color,Toy,T Total, 
    ROW_NUMBER() OVER(PARTITION BY Color,Toy ORDER BY T DESC) RN
    FROM(
        SELECT color,toy,count(*) T
        FROM your_table
        GROUP BY color,toy
    ) A
)

SELECT * FROM CTE WHERE RN = 1
© www.soinside.com 2019 - 2024. All rights reserved.