You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL分组查询中按国家统计Desktop_User和Mobile_User为True的数量

分组统计用户设备类型的解决方案

没问题,我来帮你搞定这个分组统计的需求!首先得处理好各个字段的NULL值——毕竟不管是Country、Desktop_User还是Mobile_User的空值,都得纳入统计逻辑里。

核心思路

  • 对于Desktop_User和Mobile_User的NULL值,我们默认当作False处理,只有明确标记为True的记录才算有效统计项;
  • 按Country分组,哪怕Country是NULL,也要单独作为一组展示;
  • 分别统计每个国家(含未知国家)的桌面端用户数和移动端用户数。

实现SQL代码

这里用标准SQL写法,适配大多数数据库(MySQL、PostgreSQL、SQL Server等),你只需要把your_table_name换成实际的数据表名即可:

SELECT
  COALESCE(Country, 'Unknown') AS Country,
  COUNT(CASE WHEN Desktop_User = TRUE THEN 1 END) AS Desktop_User_Count,
  COUNT(CASE WHEN Mobile_User = TRUE THEN 1 END) AS Mobile_User_Count
FROM
  your_table_name
GROUP BY
  Country
ORDER BY
  Country;

代码解释

  • COALESCE(Country, 'Unknown'):把Country列的NULL值替换成“Unknown”,让报表更易读;如果想保留原始NULL值,直接写Country即可;
  • COUNT(CASE WHEN Desktop_User = TRUE THEN 1 END):只有当Desktop_User明确为True时才计数,NULL或False的情况会被自动忽略,完美匹配需求;
  • GROUP BY Country:系统会自动把相同Country的记录归为一组,包括NULL值的Country也会单独成组。

最终报表结果

执行上述SQL后,你会得到如下格式的统计报表:

CountryDesktop_User_CountMobile_User_Count
Unknown11
Brazil00
India11
Mexico01
USA10

小提示

如果你的数据库中布尔值用1/0代替True/False,只需要把CASE语句里的条件改成Desktop_User = 1和Mobile_User = 1就行,逻辑完全一致。

内容的提问来源于stack exchange,提问作者kuml

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:21:48