我有一张由人们提交的视频表:
+----+-----------+------+---------+
| id | by_person | type | title |
+----+-----------+------+---------+
| 1 | 3 | 1 | title1 |
| 2 | 4 | 1 | title2 |
| 3 | 3 | 1 | title3 |
| 4 | 4 | 2 | title4 |
| 5 | 3 | 1 | title5 |
| 6 | 6 | 2 | title6 |
| 7 | 6 | 2 | title7 |
| 8 | 4 | 2 | title8 |
| 9 | 3 | 1 | title9 |
| 10 | 4 | 1 | title10 |
| 11 | 4 | 1 | title11 |
| 12 | 3 | 1 | title12 |
+----+-----------+------+---------+
我如何SELECT
提交了大多数类型为1的视频的前两个人,所以我得到这样的演示文稿?
1. Person(3) - 5 videos
2. Person(4) - 3 videos
答案 0 :(得分:3)
我认为这会奏效:
SELECT by_person, count(*) AS total
FROM videos
WHERE type = 1
GROUP BY by_person
ORDER BY total DESC
LIMIT 2
答案 1 :(得分:2)
你可以试试这个:
select by_person, sum(case when type = 1 then 1 else 0 end) as NumType1
from videos v
group by by_person
order by NumType1 desc
limit 2
答案 2 :(得分:1)
SELECT by_person, COUNT(title)
FROM videos
WHERE type = 1
GROUP BY by_person
ORDER BY COUNT(title) DESC LIMIT 2;