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
换句话说:
- 这两个名称相同(不区分大小写):
CrashsPerDay
和crashsperday
- 这两个名字不一样(区分大小写):
"CrashsPerDay"
和"crashsperday"
- 在 PostgreSQL 中,这两个名称相同(默认小写):
crashsperday
和 "crashsperday"
OCD 奖励修复:It's "crashes", not "crashs" ;-)
我是 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
换句话说:
- 这两个名称相同(不区分大小写):
CrashsPerDay
和crashsperday
- 这两个名字不一样(区分大小写):
"CrashsPerDay"
和"crashsperday"
- 在 PostgreSQL 中,这两个名称相同(默认小写):
crashsperday
和"crashsperday"
OCD 奖励修复:It's "crashes", not "crashs" ;-)