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

如何获取单列count值?单列表格状态值分组计数方法咨询

嘿,我来帮你搞定这两个SQL统计问题:

问题1:如何获取单个列的count值?

这里分几种常见场景,你可以按需选择:

  • 统计该列所有非空值的数量:用COUNT(列名),比如你的列叫status,语句就是:
    SELECT COUNT(status) FROM your_table;
    
    这个会忽略列中的NULL值,只统计有实际内容的行。
  • 统计该列去重后的非空值数量:如果想知道这个列里有多少种不同的值,用COUNT(DISTINCT 列名):
    SELECT COUNT(DISTINCT status) FROM your_table;
    
  • 要是你想统计整个表的总行数(不管该列是否为空),直接用COUNT(*)就行,不过如果是单列表且没有NULL值的话,和COUNT(列名)结果一致。
问题2:按状态分组统计各值出现次数

这个用GROUP BY配合COUNT(*)就能轻松实现,假设你的表叫status_table,列名是status,基础语句如下:

SELECT status, COUNT(*) AS 出现次数
FROM status_table
GROUP BY status;

执行后会得到类似这样的结果:

status出现次数
good2
bad2
average2
need to improve1

如果想要输出格式更贴近你要的「Good 2、average 2...」这种(比如把首字母大写),可以根据你用的数据库调整:

  • 如果你用PostgreSQL/Oracle,用INITCAP()函数统一首字母大写:
    SELECT INITCAP(status) AS 格式化状态, COUNT(*) AS 出现次数
    FROM status_table
    GROUP BY status;
    
  • 如果是MySQL,需要用字符串拼接来实现首字母大写:
    SELECT CONCAT(UPPER(SUBSTRING(status, 1, 1)), LOWER(SUBSTRING(status, 2))) AS 格式化状态, COUNT(*) AS 出现次数
    FROM status_table
    GROUP BY status;
    

要是想直接拼成「Good 2」这样的字符串结果,可以再加一层字符串拼接:
PostgreSQL示例:

SELECT CONCAT(INITCAP(status), ' ', COUNT(*)) AS 统计结果
FROM status_table
GROUP BY status;

执行后每一行就是你想要的格式啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:42