thay thế where errors >= 1
với (cast(a.count as decimal) * 100 / b.count)>=1
vì không có cột nào được gọi là lỗi mà là cột dẫn xuất:
select a.date, (cast(a.count as decimal) * 100 / b.count) as errors
from (select date(time) as date, count(status)
from log
where status != '200 OK'
group by date
order by date asc) as a
join (select date(time) as date, count(status)
from log
group by date
order by date asc) as b
on a.date = b.date
where (cast(a.count as decimal) * 100 / b.count) >= 1
order by errors desc;
HOẶC
Nó có thể được sử dụng như trên như sau:
select *
from (select a.date, (cast(a.count as decimal) * 100 / b.count) as errors
from (select date(time) as date, count(status)
from log
where status != '200 OK'
group by date
order by date asc) as a
join (select date(time) as date, count(status)
from log
group by date
order by date asc) as b
on a.date = b.date) q
where errors >= 1
order by errors desc;
trong một truy vấn con.