【发布时间】:2019-04-09 22:28:06
【问题描述】:
我正在尝试创建一个表格来显示按年份播放最少的歌曲。
例如,如果 Song1 和 Song2 都只有 1 次播放,而 Song3 在 2018 年有 2 次播放,Song1 在 2017 年有 1 次播放,而 Song2 在 2017 年有 2 次播放,我想要一个返回 3 行的表格:
Song1 - 2018 - 1 场
Song2 - 2018 - 1 场
Song1 - 2017 - 1 次播放
有没有办法显示 min(count('x')) = count('x') 的歌曲。 我确定这不是正确的语法,但它本质上是我想要找到的。
SELECT * FROM music
NATURAL JOIN (SELECT extract(year from date) AS yr, song_code, COUNT('x')
FROM singles NATURAL JOIN plays
GROUP BY extract(year from date), song_code
ORDER BY yr desc, COUNT('x') desc);
目前我将歌曲按一年的播放次数分组,但我不确定如何只显示播放次数最少的歌曲。
【问题讨论】:
-
HAVING MIN(COUNT(x)) = COUNT(x) -
@Aganju - 当我尝试这样做时,我得到一个“组函数嵌套很深”的错误。
-
不要使用
natural join!它甚至没有使用正确声明的外键关系。 . .它可能会引入非常难以调试的错误。 -
不相关,但是:您是否知道
COUNT('x')与count(*)相比没有性能(或其他)优势?