Ограничение таблицы количеством записей, имеющих конкретное значение в одном из столбцов - PullRequest
0 голосов
/ 05 ноября 2018

Моя задача - выбрать страны, в которых количество городов превышает количество городов, в которых Канада указана в качестве страны в таблице. Я использую таблицы городов и стран из базы данных sakila . Теперь у меня есть что-то вроде этого:

SELECT country, COUNT(country) FROM ( city
  INNER JOIN country ON country.country_id = city.country_id)
  GROUP BY country
  HAVING COUNT(country) >= 7 -- should be COUNT(country='Canada') or something like that
  ORDER BY COUNT(country) DESC;

Число 7 в 4-й строке - количество городов, где столбец страны равен «Канада», но я понятия не имею, как считать это с помощью SQL, и при этом я не могу найти правильный путь с помощью Google. Есть предложения?

1 Ответ

0 голосов
/ 05 ноября 2018

Вам нужно поместить подзапрос в ваше предложение HAVING.

Следующий запрос возвращает количество городов в Канаде.

SELECT count(*) 
FROM city
LEFT JOIN country ON city.country_id = country.country_id
WHERE country = 'Canada'
GROUP BY country

Итак, вы включили это в свое положение.

SELECT 
    country, COUNT(*) 
FROM 
    city
INNER JOIN 
    country ON country.country_id = city.country_id
GROUP BY 
    country
HAVING 
    COUNT(country) >= (
        SELECT count(*) 
        FROM city
        LEFT JOIN country ON city.country_id = country.country_id
        WHERE country = 'Canada'
        GROUP BY country
    )
ORDER BY 
    COUNT(country) DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...