【问题标题】:SQL - Aggregated Functions - Misuse of COUNT FunctionSQL - 聚合函数 - 误用 COUNT 函数
【发布时间】:2019-12-22 18:04:47
【问题描述】:

我有一张包含歌曲的表格(“曲目”是我的表格的名称)。我只能使用这个表来检索我的数据。

该表包含具有 AlbumId 的列。所以我试图在这个表中找到所有至少有 12 首歌曲的专辑。

我使用以下代码,但收到一条错误消息(滥用聚合:COUNT()

SELECT 
AlbumId,
COUNT(*)
FROM Tracks
WHERE COUNT(*) > 12
GROUP BY AlbumId;

我的代码到底出了什么问题,我如何才能获得我想要的数据?

谢谢!

【问题讨论】:

  • COUNT(*) 而不是COUNT(),其次要按聚合过滤,您需要使用HAVING 而不是WHERE

标签: mysql sql sqlite


【解决方案1】:

您需要的正确 SQL 是 SELECT AlbumId, COUNT(TrackID) AS tracks FROM Tracks GROUP BY AlbumID HAVING COUNT(TrackID) > 12;

为什么要使用 HAVING ??

因为您需要应用拥有超过 12 首曲目的条件您按专辑 ID 分组之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2013-08-14
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多