嗨,我想得到这个查询的结果。我试图得到这个查询的一些结果,但不理解这个查询问题语句的完整逻辑。这个查询返回我的播放列表ID与流派名称和曲目计数按流派名称分组。
这是我的sql代码:
select pt.playlistid,g.name,count(g.name) as genrecount from playlisttrack pt
join track t on pt.trackid=t.trackid
join genre g on t.genreid=g.genreid
group by pt.playlistid,g.name;
下面是数据库架构:
1条答案
按热度按时间af7jpaap1#
您希望找到每个播放列表的计数,因此希望
GROUP BY
该播放列表的主键(也不是按流派分组,因为你想统计不同的流派,而不是统计每种流派有多少)。然后找到流派的不同数量,可以使用COUNT(DISTINCT genreid)
来计数流派的不同主键,并且由于标识符包括在track
表中,因此不需要连接genre
表。在Oracle 12中,要获得最大值,可以使用
ORDER BY thing_you_want_the_most_of DESC FETCH FIRST ROW WITH TIES
。或者,如果您只需要id:
或者,使用解析函数
RANK
而不是FETCH
语法:型