我编写了一个sql查询,用于获取在一段时间内为绘图图(grafana或图表js)创建的用户数量,我的sql查询是
SELECT
date(user.created_date) as "time",
count(distinct user.id) as Number Of User,
status as status
FROM user
WHERE
created_date >= FROM_UNIXTIME(1649635200) AND
created_date < FROM_UNIXTIME(1649894399)
GROUP BY user.status, date(user.created_date)
ORDER BY date(user.created_date)
在这个查询中,创建的日期是从前端动态传递的,现在我得到的结果如下,
现在,每当我从最后24小时/12小时中选择日期筛选器时,有些结果就不存在了,
有什么方法可以将我的sql查询修改成按created_date分组的方法吗?例如,现在的查询结果是11/04/2022-5用户(创建了应用程序),我想要这样的查询结果: 11/04/2022 00:00:002-2用户创建的11/04/2022 12:00:00 -3用户。
发布于 2022-04-14 07:37:37
在grafana中有一个已归档的$__timeFrom()
和$__timeTo()
,在此基础上,我重写了我的查询:
SELECT
(CASE
WHEN HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
THEN user.created_date
ELSE date(user.created_date) end) AS "time",
count(distinct user.id) as Users,
FROM user
WHERE
user.created_date >= $__timeFrom() AND
user.created_date < $__timeTo() AND
GROUP BY CASE
when HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
then user.created_date
else date(created_date) end
ORDER BY CASE
when HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
then user.created_date
else date(created_date) end;
https://stackoverflow.com/questions/71852020
复制相似问题