Проблема с использованием «count» после использования «by» в SQL - PullRequest
0 голосов
/ 29 января 2019

SCHEMA:

фильмы:

[id, название, release_year, страна, продолжительность, язык, сертификация, брутто, бюджет]

Сколько было разных летвыпущено более 200 фильмов?

Мой запрос

select count(release_year)
from films
group by release_year
having count(title)>200;

Ожидаемый результат - 13.

Проблема: я получаю

Count
236
203
209
225
221
214
252
238
220
224
226
227
260

чтоя здесь скучаю?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы можете разбить его на части, запросив годы и сосчитав выпущенные в этом году фильмы, а затем сосчитать строки в этом наборе результатов:

with cte as (
    select release_year
    from   films
    having count(title) > 200
)
select count(*)
from cte;

или

select count(*)
from (
    select release_year
    from   films
    having count(title) > 200
) cte;

Что вы?Это группировка по году выпуска, поэтому вы получаете по одной строке за год выпуска, а число, которое вы получаете за каждый год, равно числу строк, в которых release_year не равен нулю (count(release_year))

0 голосов
/ 29 января 2019

Если вам нужен номер, то вам нужен подзапрос:

select count(*)
from (select release_year
      from films
      group by release_year
      having count(title) > 200
     ) x;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...