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

想象一下我在表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;

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

这是我得到的错误:

  

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

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

color   toy       count
-----------------------
Red     Truck     2     (NOT RED CAR)
Blue    Car       2
Yellow  Airplane  1
wwwxt 回答:SQL语法帮助:返回计数组合的最大值

如果您使用的是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
,

SQL Server提供了一种方便的方法来执行此操作而无需子查询:

MyService
本文链接:https://www.f2er.com/3112765.html

大家都在问