SELECT 在子查询上

SELECT on a subquery

我是 Postgresql 初学者。我有一个 table "crashs" 和

编号 |日期 |时间

以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

现在我想 select 此查询的最大 nbCrashs(所以在这里,30/03/2016 --> 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";

我是法国人,所以我会尝试翻译错误消息,但我得到了 "missing entry of the FROM clause for the table "crashsperday

我的SELECT上的错误点,"max('C'rashsPerDay.nbCrashs)"'C'上的错误点

有人知道如何修复我的查询吗?

感谢您的关注

这是区分大小写的问题。一旦你开始用 "Quotes" 包裹你的名字,你必须小心,每次引用它时都要用引号引起来。 IE。以下查询将为您解决问题:

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

换句话说:

  • 这两个名称相同(不区分大小写):CrashsPerDaycrashsperday
  • 这两个名字不一样(区分大小写):"CrashsPerDay""crashsperday"
  • 在 PostgreSQL 中,这两个名称相同(默认小写):crashsperday"crashsperday"

OCD 奖励修复:It's "crashes", not "crashs" ;-)