【发布时间】:2020-01-11 16:13:46
【问题描述】:
我正在尝试按收视等级计算不同视频的计数。我有下表:
vid_id views
1 6
1 10
1 900
2 850
2 125000
3 1010
3 12239
3 150000
我尝试使用此代码来获得我想要的输出:
SELECT
CASE
WHEN views < 1000 THEN '< 1K Views'
WHEN views >= 1000 AND views < 10000 THEN '1K to 10K Views'
WHEN views >= 10000 AND views < 100000 THEN '10K to 100K Views'
WHEN views >= 100000 AND views < 1000000 THEN '100K to 1M Views'
ELSE '1M+ Views'
END AS tier,
COUNT(distinct vid_id)
FROM
test
GROUP BY
tier
由于每个 vid_id 有多个条目,我想使用每个 vid_id 的最大观看次数对每个层的视频计数进行分组。所以我的输出应该是:
tier COUNT(views)
< 1K Views 1
100K to 1M Views 2
视频 #1 的观看次数最多达到 900 次,因此它位于 < 1K Views 层中。视频 2 和 3 分别达到 125,000 和 150,000 次观看。所以他们在100K to 1M Views 层。
【问题讨论】:
-
您的语句将失败.. 分组并选择
标签: mysql sql group-by count case