我正在用Grafana设置一些仪表板,以计算功能测试的每日通过和失败次数。我对下面的SQL代码感到厌倦,但是它永远不会显示0数据(如果一天之内没有任何失败,该日期将不会出现在查询结果集中)。
我认为这是平台无关的问题。
SELECT
count(status) AS "Fail"
FROM function_test
WHERE status = false
GROUP BY date_time
预期结果:
-----------------------
day01 | 100
-----------------------
day02 | 200
-----------------------
day03 | 0
-----------------------
day04 | 10
-----------------------
实际结果:
-----------------------
day01 | 100
-----------------------
day02 | 200
-----------------------
day04 | 10
-----------------------
SQL执行顺利,没有错误消息。
答案 0 :(得分:1)
也许您可以在这里找到答案 https://blog.csdn.net/ouyang111222/article/details/77638826
建立最近7天的结果集,然后对查询的结果集进行左连接
select a.click_date,ifnull(b.count,0) as count
from (
SELECT curdate() as click_date
union all
SELECT date_sub(curdate(), interval 1 day) as click_date
union all
SELECT date_sub(curdate(), interval 2 day) as click_date
union all
SELECT date_sub(curdate(), interval 3 day) as click_date
union all
SELECT date_sub(curdate(), interval 4 day) as click_date
union all
SELECT date_sub(curdate(), interval 5 day) as click_date
union all
SELECT date_sub(curdate(), interval 6 day) as click_date
) a left join (
select date(create_time) as datetime, count(*) as count
from arms_task
group by date(create_time)
) b on a.click_date = b.datetime;
答案 1 :(得分:1)
也许我自己也回答了这个问题。
只需选择所有行(否WHERE
仅在第一行选择所有行)并执行条件计数即可。
代码如下。
SELECT
count(IF(status = false,true,null)) AS "Fail"
FROM function_test
GROUP BY date_time
答案 2 :(得分:0)
您可以使用IF
语句过滤0个值
IF(status = false,true,null)
使用此查询命令,您可以过滤空行