0

我有一个包含日期时间记录和测量值的数据库。

我一直在编写两个单独的查询,一个是返回上个月一天中特定时间之间所有每日记录的总计数,另一个是相同的查询,但仅在测量值低于阈值时才计数。

然后,我手动将阈值计数除以每天的总计数,我可以获得正常运行时间百分比或 SLA。

所以我有两个问题:
1)我可以将这两个查询合并为一个查询吗? 我找到了 #1 的答案,见下文
2) 我可以继续在查询中进行数学运算吗,所以我得到的只是每天的列表,上面的计数,下面的计数,以及上面的 % 或低于阈值...

下面列出了示例数据和查询。
TableA
主机名、日期时间、值

示例查询返回上个月的天数,不包括周末天数。

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

1 回答 1

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);
于 2013-08-31T02:07:46.223 回答