我是Postgresql的初学者。我有一张桌子"崩溃"与
ID |日期|时间
ID为PK。
我有一个查询计算每天所有崩溃:
SELECT TO_CHAR(crashs.date, 'DD/MM/YYYY') AS "date", COUNT(crashs."ID") AS "nbCrashs"
FROM crashs
WHERE crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND
crashs.date <= to_date('2016-03-31','YYYY-MM-DD')
GROUP BY crashs.date
ORDER BY crashs.date ASC;
结果:
date | nbCrashs
----------------------------
29/03/2016 | 2
30/03/2016 | 4
31/03/2016 | 3
现在我想选择此查询的最大nbCrashs(所以这里,30/03/2016 - &gt; 4)
我尝试使用SELECT作为子查询,但它不起作用......这是我试过的查询:
SELECT MAX(CrashsPerDay.nbCrashs)
FROM
(SELECT TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS "nbCrashs"
FROM crashs
WHERE crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND
crashs.date <= to_date('2016-03-31','YYYY-MM-DD')
GROUP BY crashs.date
ORDER BY crashs.date ASC) AS "CrashsPerDay";
我是法国人,所以我会尝试翻译错误信息,但是我得到了类似于#34;缺少表格的FROM子句的条目&#34; crashsperday&#34;
我的SELECT上的错误点,在&#39; C&#39; &#34; max(&#39; C&#39; rashsPerDay.nbCrashs)&#34;
有人知道如何修复我的查询吗?
感谢您的关注
答案 0 :(得分:1)
这是一个区分大小写的问题。一旦你开始在"Quotes"
中包装你的名字,你必须小心每次引用它时始终将该名称包装在引号中。即以下查询将为您解决问题:
SELECT MAX("CrashsPerDay"."nbCrashs") -- Fix here
FROM
(SELECT TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS "nbCrashs"
FROM crashs
WHERE crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND
crashs.date <= to_date('2016-03-31','YYYY-MM-DD')
GROUP BY crashs.date
ORDER BY crashs.date ASC) AS "CrashsPerDay";
或者,或许更好:
SELECT MAX(CrashsPerDay.nbCrashs)
FROM
(SELECT TO_CHAR(crashs.date, 'DD/MM/YYYY'), COUNT(crashs."ID") AS nbCrashs -- fix here
FROM crashs
WHERE crashs.date >= to_date('2016-03-28','YYYY-MM-DD') AND
crashs.date <= to_date('2016-03-31','YYYY-MM-DD')
GROUP BY crashs.date
ORDER BY crashs.date ASC) AS CrashsPerDay; -- and fix here
换句话说:
CrashsPerDay
和crashsperday
"CrashsPerDay"
和"crashsperday"
crashsperday
和"crashsperday"
OCD奖励修复:It's "crashes", not "crashs"; - )