Postgresql SQL查询不显示任何结果
我创建了一个视图名-author\u article\u log,如下所示:Postgresql SQL查询不显示任何结果,postgresql,Postgresql,我创建了一个视图名-author\u article\u log,如下所示: 我的工作是获取一天中请求错误的百分比, 我的问题是: select i.date, ((count (case when i.status = '404 NOT FOUND' then 1 else 0 end) * 1.0 / count (case wh
我的工作是获取一天中请求错误的百分比, 我的问题是:
select i.date,
((count (case when i.status = '404 NOT FOUND'
then 1
else 0
end)
* 1.0
/ count (case when i.date = j.date
then 1
else 0
end)
) *100
) as percentage
from author_article_log as i, author_article_log as j
group by i.date, j.date
order by percentage desc;
运行此查询既不会返回任何结果也不会返回任何错误,是否有人可以告诉我发生这种情况的原因?您可以尝试使用
WITH
子句筛选您的请求
WITH errors AS (
SELECT date, COUNT(*) AS nb_errs
FROM author_article_log
WHERE status = '404 NOT FOUND'
GROUP BY date
), total AS (
SELECT date, COUNT(*) AS nb_queries
FROM author_article_log
GROUP BY date
)
SELECT e.date, 100.0 * e.nb_errs / t.nb_queries AS percentage
FROM errors e
JOIN total t ON e.date = t.date
ORDER BY percentage DESC
文档:- 你不需要自我加入
- 您需要
,而不是sum()
注意:count()
等于count(0)
1
是一个关键字;最好不要将其用作列名DATE
我不确定是否可以在
COUNT
调用中设置大小写
,但我想说的是SUM
函数在您的查询中更合适。顺便问一下:从author\u article\u log as I,author\u article\u log as j
您是否意识到这两个表引用没有以任何方式连接起来,产生一个Carthesian产品?@joop:我在我的查询中添加了一个join语句,看起来像:从author\u article\u log作为j加入author\u article\u log作为j on I.date=j.date,即使它什么也不返回。
WITH errors AS (
SELECT date, COUNT(*) AS nb_errs
FROM author_article_log
WHERE status = '404 NOT FOUND'
GROUP BY date
), total AS (
SELECT date, COUNT(*) AS nb_queries
FROM author_article_log
GROUP BY date
)
SELECT e.date, 100.0 * e.nb_errs / t.nb_queries AS percentage
FROM errors e
JOIN total t ON e.date = t.date
ORDER BY percentage DESC
SELECT zdate,
100.0 * SUM (CASE WHEN status = '404 NOT FOUND' THEN 1 ELSE 0 END)
/ COUNT(*) AS percentage
FROM author_article_log
GROUP BY zdate
ORDER BY percentage DESC
;