Mysql 使用group子句和聚合函数对行数据进行操作
这是表a的一个片段:Mysql 使用group子句和聚合函数对行数据进行操作,mysql,group-by,aggregate-functions,mysql-workbench,Mysql,Group By,Aggregate Functions,Mysql Workbench,这是表a的一个片段: station code ChildLabour DrinkingWater staA 01 3 4 staA 03 2 1 staB 05 5 10 我正在尝试对该表进行查询,结果如下所示: 查询结果说明: 根据站点和代码,计算
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
我正在尝试对该表进行查询,结果如下所示:
查询结果说明:
根据站点和代码,计算ChildLabor值为yes的人数并显示结果。还计算饮用水值为“是”的人数,并显示每个站点的结果和相应代码
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
到目前为止,我的查询如下:
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
select distinct station,code,
(select count(persons) from `tableA`
where childLabour='Yes'
group by `station,code`) as `childLabour`
from `tableA` order by code `asc`;
但它会生成错误的结果,如下所示:
查询在整个列中显示其childLabour值=Yes的所有人员的相同值Total
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 3 4
staB 05 3 4
我该如何解决这个问题,我相信这不是一个大问题 可以尝试使用SUM并仅对有效值求和-等于yes:
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
SELECT station, code, SUM(IF(childLabour = 'Yes', 1, 0)), SUM(IF(DrinkingWater = 'Yes', 1, 0))
FROM tableA
GROUP BY station, code
结果:
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
staA 01 1 3
staA 03 0 0
staB 05 2 3
staC 03 1 0
staC 04 0 1
说明:
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
station code persons childLabour DrinkingWater
staA 01 isaac No Yes
staA 01 Gera No No
staA 01 Allen No Yes
staA 01 Jean Yes Yes
1 3
staA 03 Jeff No No
0 0
staB 05 Saleh No Yes
staB 05 Jane Yes Yes
staB 05 zoltan Yes Yes
2 3
staC 03 Henry Yes Nn
1 0
staC 04 Billy No Yes
0 1
这些是结果,也是我得到它们的原因
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10
不起作用,查询在ChildLabour列中返回0。。。但我需要童工价值=是的人的总数或计数!根据您提供的数据,再看一看,我得到的输出以及为什么-您在问题上提供的相同数据上没有得到相同的结果?查看查询:按站点从主组中选择station,code,SUMIFchildLabour='Yes',1,0,code;如果童工为是,则if返回1。我需要count/sum函数来计算条件设置为true的人数……对于每个分组的[站点和代码]。->您的查询没有得到正确的结果!我不明白结果集与数据集的关系。结果集:这是我想要得到的结果。。。
station code ChildLabour DrinkingWater
staA 01 3 4
staA 03 2 1
staB 05 5 10