Mysql 使用Group By和Union All计算多个列?
我有一个查询,我想计算3列s、s2和s3的值,并使用Group By列s的值 到目前为止,我已经做到了这一点 这将给我输出Mysql 使用Group By和Union All计算多个列?,mysql,group-by,count,Mysql,Group By,Count,我有一个查询,我想计算3列s、s2和s3的值,并使用Group By列s的值 到目前为止,我已经做到了这一点 这将给我输出 1 - count 3 2 - count 3 4 - count 4 这几乎是正确的,但我还想包括Where子句correct,因此计数将仅为Where seash='2018/2019'和round=34 所需的输出必须是: 1 - count 3 2 - count 2 4 - count 2 知道如何编辑此查询以便Where子句在计算的值中工作吗
1 - count 3
2 - count 3
4 - count 4
这几乎是正确的,但我还想包括Where子句correct,因此计数将仅为Where seash='2018/2019'和round=34
所需的输出必须是:
1 - count 3
2 - count 2
4 - count 2
知道如何编辑此查询以便Where子句在计算的值中工作吗
诸位,
Arie您应该为union中的每个表筛选行
SELECT t.s, COUNT(*) as count FROM (
SELECT s
FROM tablename
WHERE season = '2018/2019' and round = 34
UNION all
SELECT s2
FROM tablename
WHERE season = '2018/2019' and round = 34
UNION all
SELECT s3
FROM tablename
WHERE season = '2018/2019' and round = 34
) as t
GROUP BY t.s
ORDER BY count DESC
您必须扩展联合查询以包括季节和回合,并在where子句中添加条件:
SELECT t.s, COUNT(*) as count FROM (
SELECT s, season, round FROM tablename UNION all
SELECT s2, season, round FROM tablename UNION all
SELECT s3, season, round FROM tablename
) as t
WHERE
t.s IN (
SELECT s FROM tablename
WHERE season = '2018/2019'
AND round = 34
AND s is not null
)
AND t.season = '2018/2019'
AND t.round = 34
AND t.s is not null
GROUP BY t.s
ORDER BY count DESC, t.s
请参阅。结果:
如果在季节和回合中没有s,那么你会删除s2和s3-我很好奇为什么?因为我只想对列s的值进行分组。这很好,唯一的问题是现在每个值都被计算,但我只想让列s进行分组,在这个解中,数字3也被计算。
| s | count |
| --- | ----- |
| 1 | 3 |
| 2 | 2 |
| 4 | 2 |