Проблема с использованием «count» после использования «by» в SQL

0

SCHEMA:

фильмы:

[Идентификатор, название, 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

что мне здесь не хватает?

  • 0
    Если вы не заметили, вы получите эти 13 лет в результате.
  • 0
    Имея это не вещь
Теги:

2 ответа

0

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

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

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

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))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню