作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 mysql 查询
select sum(duration),app_name,app_id,user_id
from timesheet
where user_id=164
group by app_id
order by sum(duration) desc
limit 5;
结果是
sum(duration), app_name, app_id, user_id
'626919371', 'Idle.exe', '0', '164'
'38220511', 'LockApp.exe', '2204', '164'
'36675000', '', '1', '164'
'27713000', 'LockApp.exe', '8148', '164'
'16698661', 'chrome.exe', '8548', '164'
但是,我想要每个 user_id 的前 5 个应用程序,而不仅仅是 164。您能否指导我如何在单个查询中实现这一点。或者我是否需要为每个单独的用户触发它
最佳答案
这应该有效:
SELECT *
FROM (
SELECT *, rank() over (PARTITION BY user_id ORDER BY duration desc) AS rank
FROM (
SELECT user_id, app_id, sum(duration) AS duration
FROM timesheet
GROUP BY user_id, app_id
) sub2
) sub
WHERE rank < 6
如果您希望查询始终为每个用户返回 5 行(即使有一些具有相同排名的顶级应用程序),请将 rank()
替换为 row_number()
关于mysql - 通用化MYSQL查询所有user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530730/
我的表格包含这 3 个实体:学生、讲师和个人。人将是拥有学生和讲师共同属性的 parent 。这是我的数据库设计,这是实现特化的正确方法吗? 人 personID int 主键, 作用 varchar
我在原始 Windows 2016 服务器测试网站上配置了 SSL 以使用 HTTPS 流量。 通用化虚拟机后,当我从通用 VHD 创建新的 Windows 虚拟机时,我无法浏览 HTTPS 流量。
我是一名优秀的程序员,十分优秀!