Postgres/ANSI SQL 系统如何将 'count' 聚合与 GROUP BY 字段相关联
How Postgres/ANSI SQL systems relate 'count' aggregates to GROUP BY fields
我试图理解以下 SQL 查询中的 group by
和 count(*)
:
select Fizz.countryId, Buzz.kindId, Buzz.razId, count(*)
from Foo
join Buzz on Foo.BuzzId = Buzz.id
join Fizz on Foo.FizzId = Fizz.id
where
Foo.borrowed > CURRENT_DATE - INTERVAL '6 months'
group by
Fizz.countryId, Buzz.kindId, Buzz.razId;
所以我们要加入三个 table:Fizz
、Buzz
和 Foo
。然后我们从加入的 table 中过滤掉记录
Foo.borrowed
字段超过 6 个月。但我不明白 count(*)
是如何计算的
以及它与 group by
子句中提到的字段的关系。 有什么想法吗?
在结果中,Fizz.countryId, Buzz.kindId, Buzz.razId
的每个不同组合只会显示一行。这就是 group by
所做的。
因此,每个结果行可能代表许多原始行。多少? count(*)
告诉你。
我试图理解以下 SQL 查询中的 group by
和 count(*)
:
select Fizz.countryId, Buzz.kindId, Buzz.razId, count(*)
from Foo
join Buzz on Foo.BuzzId = Buzz.id
join Fizz on Foo.FizzId = Fizz.id
where
Foo.borrowed > CURRENT_DATE - INTERVAL '6 months'
group by
Fizz.countryId, Buzz.kindId, Buzz.razId;
所以我们要加入三个 table:Fizz
、Buzz
和 Foo
。然后我们从加入的 table 中过滤掉记录
Foo.borrowed
字段超过 6 个月。但我不明白 count(*)
是如何计算的
以及它与 group by
子句中提到的字段的关系。 有什么想法吗?
在结果中,Fizz.countryId, Buzz.kindId, Buzz.razId
的每个不同组合只会显示一行。这就是 group by
所做的。
因此,每个结果行可能代表许多原始行。多少? count(*)
告诉你。