如何查找重复记录,不使用聚合函数和分组?



db中有歌手和歌曲表,我们必须通过不使用聚合函数和按关键字分组来找到拥有最多歌曲号码的人。

土耳其语表

表被翻译成

song(sarkino, name, tour, duration, composerno, author no)
singer(singer, name, type, birthDate, birthPlace)
album(albumno, name, year, price, singer, stock quantity)
Song in the album(albumno, song, order)
composer(composcino, name, tour)
author(author, name)

问题原文:
在这里输入图片描述

问题翻译为:

求写歌词最多的作者编号,如我们在课堂上(在演示的例子中)没有使用聚合函数或分组by。

正如Ergest所提到的,非常标准的方法是使用GROUP BYCOUNT。但是,今天你的老师喜欢挑战。

GarethD的替代解决方案(绝对符合要求)

我想在我的回答中重述一下GarethD的评论,这都是他的功劳。

如果讲师认为COUNT(*)是一个聚合函数,即使在窗口函数中使用,这将不是一个可行的解决方案。如果唯一的要求是获得拥有最多歌曲的歌手,那么另一种选择是使用ROW_NUMBER(),这几乎肯定不是任何人定义的聚合函数

SELECT s.name, 
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY Songs.id) AS number_of_songs
FROM singers AS s
JOIN Songs
ON Songs.singer_id = s.id
ORDER BY number_of_songs DESC  
LIMIT 1
tbody> <<tr>
namenumber_of_songs
林肯公园5

相关内容

  • 没有找到相关文章

最新更新