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

如何按样本分组统计各功能组物种数并转为列输出的SQL实现

SQL统计样本总物种数及各功能分组物种数查询语句

假设你的数据表名为 species_records,实际使用时替换为你自己的表名即可。
你需要的是典型的条件聚合行转列需求,Group 属于SQL保留关键字,查询时需要用特殊符号包裹避免语法报错。

查询语句(统计去重物种数)

如果同一个样本下重复出现的同一物种仅计数1次,使用如下标准SQL语句:

SELECT 
    Sample,
    COUNT(DISTINCT Species) AS N_especies,
    COUNT(DISTINCT CASE WHEN `Group` = 'A' THEN Species END) AS Group_A,
    COUNT(DISTINCT CASE WHEN `Group` = 'B' THEN Species END) AS Group_B,
    COUNT(DISTINCT CASE WHEN `Group` = 'C' THEN Species END) AS Group_C,
    COUNT(DISTINCT CASE WHEN `Group` = 'D' THEN Species END) AS Group_D,
    COUNT(DISTINCT CASE WHEN `Group` = 'E' THEN Species END) AS Group_E
FROM species_records
GROUP BY Sample
ORDER BY Sample;

查询语句(统计记录条数)

如果你需要的是统计每个分组下的原始记录条数(同物种多条记录累计计数),去掉语句中的DISTINCT即可:

SELECT 
    Sample,
    COUNT(Species) AS N_especies,
    COUNT(CASE WHEN `Group` = 'A' THEN 1 END) AS Group_A,
    COUNT(CASE WHEN `Group` = 'B' THEN 1 END) AS Group_B,
    COUNT(CASE WHEN `Group` = 'C' THEN 1 END) AS Group_C,
    COUNT(CASE WHEN `Group` = 'D' THEN 1 END) AS Group_D,
    COUNT(CASE WHEN `Group` = 'E' THEN 1 END) AS Group_E
FROM species_records
GROUP BY Sample
ORDER BY Sample;

小提示:如果使用SQL Server数据库,把包裹Group的反引号替换为方括号[Group];Oracle数据库替换为双引号"Group"即可。

说明

CASE WHEN 不满足条件时默认返回NULL,COUNT函数会自动忽略NULL值,因此即使某个分组在样本中没有数据,也会返回0,和你给出的示例输出要求完全匹配。
内容的提问来源于stack exchange,提问作者Alvaro Jorquera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:45:05