mysql - 长 SQL 查询中的日期之间
问题描述
我有一个查询,我在其中获取 USER ID 和表“tickets”中最常见的用户 ID 的行数。但是现在,我想做同样的查询,但它需要在我插入的 2 个日期时间之间进行搜索。(有一列带有日期时间值('created_at'))
这是我的代码:
SELECT created_by,COUNT(*) as tickets_count
FROM tickets
WHERE created_at
group by created_by having count(*) =(select max(tickets_count) from (select created_by,count(*) as tickets_count from tickets group by created_by) tickets)
这是表格:
我已经尝试过:
SELECT created_by, COUNT(*) as tickets_count
FROM tickets
WHERE created_at BETWEEN '2021-07-25 10:00:00' AND ' 2021-07-30 12:00:00'
group by created_by
having count(*) =(select max(tickets_count) from (select created_by,count(*) as tickets_count from tickets group by created_by) tickets)
但它给了我 0 行,这是不正确的,因为 ID 6 介于这 2 天之间。
解决方案
如果您只寻找一个用户,您可以使用ORDER BY
and LIMIT
:
SELECT created_by, COUNT(*) as tickets_count
FROM tickets
WHERE created_at BETWEEN '2021-07-25 10:00:00' AND ' 2021-07-30 12:00:00'
GROUP BY created_by
ORDER BY COUNT(*) DESC
LIMIT 1;
如果您希望所有用户都存在重复项,请使用窗口函数:
SELECT t.*
FROM (SELECT created_by, COUNT(*) as tickets_count,
RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM tickets
WHERE created_at BETWEEN '2021-07-25 10:00:00' AND ' 2021-07-30 12:00:00'
GROUP BY created_by
) t
WHERE seqnum = 1;
推荐阅读
- node.js - 使用 Axios Node.js 请求 oAuth2 令牌 - 使用“请求”但不适用于 Axios
- awk - 将每一列除以另一列
- firebase - 在 Flutter 中从 Firebase RealTime DB 接收对象
- wpf - 当应用程序不在焦点时更改键盘语言
- python - 为什么程序不循环?
- find - 在 find 命令中查找不支持 printf 的 AIX 系统上的前 N 个最旧文件
- reactjs - 在 React & Emotion JS 中将样式传递给孩子的首选方式是什么?
- c# - 在列表中添加一个数字
大批 - batch-file - 是否可以执行一个文件,然后等到文件更改后再在 MS Batch 中再次执行?
- html - 检查元素 HTML 设置根文件路径