我有一个包含日期时间和测量值记录的数据库。
我一直在编写两个单独的查询,一个用于返回上个月某些时段之间所有日常记录的总计数,以及相同的查询,但仅在测量值低于阈值时计数。 br />
然后我手动将每天的总数计算得分,我可以获得%正常运行时间或SLA。
所以我有两个问题:
1)我可以将这两个查询合并为一个查询。 我找到#1的答案,见下文
2)我可以继续在查询中进行数学运算,所以我得到的只是每天的列表,上面的计数,下面的计数,以及高于或低于阈值的%......
下面列出了示例数据和查询
表A
hostname,date_time,value
SELECT
count(*),
DATE(date_time),
SUM(
CASE WHEN rssi_val < 100
THEN 1
ELSE 0
END
)
FROM TableA
WHERE hostname = 'hostA'
AND DATE(date_time) BETWEEN '2013-07-01' AND '2013-07-31'
AND TIME(date_time) BETWEEN '06:00:00' AND '18:00:00'
AND DAYOFWEEK(date_time) NOT IN (1, 7)
GROUP BY DATE(date_time);
所以现在我只想知道如何添加第4列,以提供正常运行时间/停机时间百分比。
答案 0 :(得分:0)
你试过这个吗?
select count(*),
DATE(date_time),
SUM(CASE WHEN rssi_val<100 THEN 1 ELSE 0 END),
SUM(CASE WHEN rssi_val<100 THEN 1 ELSE 0 END)/count(*) as percentage
from TableA
where hostname='hostA'
and DATE(date_time) between '2013-07-01' and '2013-07-31'
and TIME(date_time) between '06:00:00' and '18:00:00'
and DAYOFWEEK(date_time) NOT IN (1,7)
group by DATE(date_time);