Mysql 按枚举值检索总和(计数)
这是我的表格的一个示例:Mysql 按枚举值检索总和(计数),mysql,sql,Mysql,Sql,这是我的表格的一个示例: drug_id | route (enum) | count ------------------------------ 1 | PO | 2 1 | IV | 4 1 | IV | 6 2 | PO | 1 2 | PO | 5 2 | IV | 2 这就是我需要信息的方式。
drug_id | route (enum) | count
------------------------------
1 | PO | 2
1 | IV | 4
1 | IV | 6
2 | PO | 1
2 | PO | 5
2 | IV | 2
这就是我需要信息的方式。基本上是它的总和(计数),但在每个“路线”的列中:
我想我需要一个支点,我一直在努力学习这个支点,但我无法用我的一生拼凑出一个简洁的查询
我试过这样的方法:
SELECT drug_id, PO, IV
FROM
(
SELECT drug_id, SUM(count) as PO, '0' as IV FROM `core_reports_antiinfectives` WHERE route="PO"
UNION
SELECT drug_id, SUM(count) as IV, '0' as PO FROM `core_reports_antiinfectives` WHERE route="IV"
) aa
然而,对于所有的IV
列,这给了我0
,我不认为这是合适的——它需要根据drugh\u id
进行“分组”,并将这些列放在一起,我也坚持这样做
我有什么遗漏吗?还是有更好的办法
谢谢
SELECT drug_id,
SUM(IF(route='PO',count,NULL)) AS PO,
SUM(IF(route='IV',count,NULL)) AS IV
FROM core_reports_antiinfectives
GROUP BY drug_id
请打开它。试试这个
SELECT drug_id,
SUM(case route when 'po' then `count` else 0 end) totalPO,
SUM(case route when 'iv' then `count` else 0 end) totalIV
FROM core_reports_antiinfectives
GROUP BY drug_id
SELECT drug_id,
SUM(case route when 'po' then `count` else 0 end) totalPO,
SUM(case route when 'iv' then `count` else 0 end) totalIV
FROM core_reports_antiinfectives
GROUP BY drug_id