Привет, я хочу проверить, есть ли в NumOfSpeakLanguages ​​более 10 языков, как я могу это сделать: вот код: SELECT country.Name, country.Capital, COUNT (DISTINCT countrylanguage.Language) AS NumOfSpeakLanguages ​​...

1
ric 9 Апр 2021 в 21:07

1 ответ

Лучший ответ

Используйте предложение HAVING для условий агрегатной функции:

SELECT country.Name,country.Capital,COUNT(DISTINCT countrylanguage.Language) AS NumOfSpeakLanguages
FROM country,
JOIN countrylanguage
  ON country.Code = countrylanguage.CountryCode
GROUP BY country.Name
HAVING COUNT(DISTINCT countrylanguage.Language) > 10
LIMIT 0, 25

@Andrew Brēza прокомментировал: Вы также можете сказать HAVING NumOfSpeakLanguages >10. (Это особенность MySQL.)

Также делаю явное JOIN!

В качестве альтернативы выполните агрегацию в производной таблице:

select * from
(
    SELECT country.Name,country.Capital,COUNT(DISTINCT countrylanguage.Language) AS NumOfSpeakLanguages
    FROM country,
    JOIN countrylanguage
      ON country.Code = countrylanguage.CountryCode
    GROUP BY country.Name
) dt
where NumOfSpeakLanguages > 10
LIMIT 0, 25
3
jarlh 9 Апр 2021 в 18:13