mysql - 排除计数为零的 MySQL 结果行

标签 mysql sql select count

我有以下 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 中跳过它们,但认为可能有更好的方法来编写查询。

欢迎提出任何建议。

最佳答案

使用这个: (注意 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

关于mysql - 排除计数为零的 MySQL 结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485418/

相关文章:

sql - 索引在 NOT IN 或 <> 子句中起作用吗?

MYSQL 选择排列;需要跨行的唯一值

ruby-on-rails - Ruby on Rails事件记录选择始终返回ID

mysql - php mysql统计进出总流量库存

php - 每个字符的多对多查询未加载 - 如何让它显示/编辑/添加?

mysql - 用于提取表单条目的 SQL 查询,其中每个值都是单独的行

python - 在 flask sqlalchemy 中只存储时间

sql - T-SQL 存储过程中的空比较

php - 向 $_SESSION 添加变量

MySQL REGEXP 在电子邮件中查找单个字母后跟一个点