Исключить строки результата MySQL, где count равен нулю - PullRequest
4 голосов
/ 20 сентября 2011

У меня следующий запрос SQL:

SELECT 
    COUNT(CASE WHEN u.account_new = 1 THEN u.user_id END) AS new_user, 
    COUNT(u.user_id) AS all_users, 
    c.country_name AS country 
FROM users u, countries c 
WHERE u.country_id = c.country_id 
GROUP BY u.country 

Показывает количество новых пользователей и общее количество пользователей, сгруппированных по странам.Я хотел бы исключить строки, в которых число новых пользователей равно нулю, но я не уверен, как это сделать в приведенном выше SQL.Сейчас я пропускаю их в PHP, но подумал, что может быть лучший способ написать запрос.

Любые предложения приветствуются.

Ответы [ 2 ]

9 голосов
/ 20 сентября 2011

Используйте это: (обратите внимание на предложение HAVING)

SELECT 
    COUNT(CASE WHEN u.account_new = 1 THEN u.user_id END) AS new_user, 
    COUNT(u.user_id) AS all_users, 
    c.country_name AS country 
FROM users u, countries c 
WHERE u.country_id = c.country_id 
GROUP BY u.country 
HAVING COUNT(CASE WHEN u.account_new = 1 THEN u.user_id END) > 0
3 голосов
/ 20 сентября 2011

Это включает в себя лучшее улучшение чтения для подсчета новых пользователей:

SELECT 
    SUM(u.account_new=1) AS new_user, 
    COUNT(u.user_id) AS all_users, 
    c.country_name AS country 
FROM users u, countries c 
WHERE u.country_id = c.country_id 
GROUP BY u.country 
HAVING SUM(u.account_new=1)>0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...