Как системы Postgres / ANSI SQL связывают агрегаты 'count' с полями GROUP BY - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь понять и group by, и count(*) в следующем запросе SQL:

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;

Итак, мы объединяем три таблицы: Fizz, Buzz иFoo.Затем мы отфильтровываем записи из этой объединенной таблицы, чье поле Foo.borrowed старше 6 месяцев.Но я не понимаю, как вычисляется count(*) и как это связано с полями, упомянутыми в предложении group by. Есть идеи?

1 Ответ

0 голосов
/ 23 мая 2018

В результате будет показана только одна строка для каждой отдельной комбинации Fizz.countryId, Buzz.kindId, Buzz.razId.Вот что делает group by.

Поэтому каждая результирующая строка может представлять множество исходных строк .Как много?count(*) говорит вам.

...