gpt4 book ai didi

SQL查询提取每个类别中得票最多的前3条记录

转载 作者:行者123 更新时间:2023-11-29 14:57:27 26 4
gpt4 key购买 nike

需要一些帮助来整理此查询。我使用的是Mysql

我有两张 table

视频 - 包含用户上传的视频

  • video_id
  • 用户 ID
  • category_id

投票 - 包含任何用户对特定视频的投票

  • vote_id
  • video_id
  • 用户 ID

我不想对查询中的类别进行硬编码 - 类别存储在具有category_id 和category_name 的类别表中

我基本上想要一个查询来提取每个类别的前 3 个视频(获得最多票数的视频)。

示例数据 - 视频表

video_id |  user_id  | category_id   1          100          10   2          101          10   3          102          11   4          103          11   5          104          11   6          105          11   7          105          12

示例数据 - 投票表

vote_id  |  video_id |  user_id  11           3          105  12           3          102  13           3          111  14           3          121  15           4          200  16           4          201  17           1          222

示例数据 - 类别表

category_id  |  category_name   10               HipHop   11               Rap   12               Country

最佳答案

这种问题用排名函数来解决是微不足道的。然而,由于 MySQL 还不支持它们,这使得它变得更加困难。在此设计中,我假设 video_id 是视频表的主键。

Select video_id, user_id, category_id, vote_count, vote_rank
From (
Select VoteCounts.video_id, VoteCounts.user_id
, VoteCounts.category_id, VoteCounts.vote_count
, (
Select Count(*) + 1
From (
Select V1.video_id, V1.user_id, V1.category_id
, Count(vote_id) As vote_count
From Videos As V1
Left Join Votes As V2
On V2.video_id = V1.video_id
Group By V1.video_id, V1.user_id, V1.category_id
) As VoteCounts1
Where VoteCounts1.category_id = VoteCounts.category_id
And (
VoteCounts1.vote_count > VoteCounts.vote_count
Or (VoteCounts1.vote_count = VoteCounts.vote_count
And VoteCounts1.video_id < VoteCounts.video_id )
)
) As vote_rank
From (
Select V1.video_id, V1.user_id, V1.category_id
, Count(vote_id) As vote_count
From Videos As V1
Left Join Votes As V2
On V2.video_id = V1.video_id
Group By V1.video_id, V1.user_id, V1.category_id
) As VoteCounts
) As VoteRanks
Where VoteRanks.vote_rank <= 3

关于SQL查询提取每个类别中得票最多的前3条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com