sql - sql如何在进行分组时限制记录数
问题描述
假设您有一个“喜欢”的评分记录。
user document timestamp
您可以查看每个用户的评分计数
select user, count(user)
from rating
group by user
如果您想要计数但上限为 100 等数字怎么办
select user, min(100, count(user))
from rating
group by user
你怎么能在sql中做类似上面的事情,最好是django queryset?
解决方案
许多数据库支持least()
(如果你想要一个上限,这就是你想要的):
select user, least(100, count(*))
from rating
group by user;
如果你没有,你可以使用一个case
表达式:
select user,
(case when count(*) > 100 then 100 else count(*) end)
from rating
group by user;
推荐阅读
- javascript - 赛普拉斯“get”是否按照元素出现在 HTML 文档中的顺序返回元素?
- node.js - 节点/快递错误,RangeError [ERR_HTTP_INVALID_STATUS_CODE]:无效状态代码:ENOENT
- android - 由于 Activity 意图,Android 通知点击导致应用程序崩溃
- delphi - 在 Delphi Rio (10.3.3) 中,当宏为 NULL 时,fdQuery 无法正确转换条件函数 'iif'
- python - 根据第三列中的条件合并两个数据框
- powershell - 将列表传递给函数
- mysql - 使用时区进行查询的最佳方法
- reactjs - 使用没有离子的电容器社区/admob
- docker - Docker内部网络和要连接的外部系统在同一范围内,即172.160.0.0/16
- c# - 替换 Rhino 模拟 GetArgumentsForCallsMadeOn() 用于 Moq Callback() 不接收原始参数