Sql 从一组选定的2个统一列中统计实例
假设我有一张叫做“比赛”的桌子,在那里我从一场足球比赛中救出了两支球队Sql 从一组选定的2个统一列中统计实例,sql,Sql,假设我有一张叫做“比赛”的桌子,在那里我从一场足球比赛中救出了两支球队 ------------------------- | home_club | away_club | ------------------------- | | | ------------------------- 我有一个查询,返回该表中的所有俱乐部,包括主场俱乐部和客场俱乐部,通过联盟: SELECT home_club AS clubs FROM matches UNION
-------------------------
| home_club | away_club |
-------------------------
| | |
-------------------------
我有一个查询,返回该表中的所有俱乐部,包括主场俱乐部和客场俱乐部,通过联盟:
SELECT home_club AS clubs FROM matches UNION SELECT away_club FROM matches
现在我有了一个名为“俱乐部”的结果集,我想统计一下每个俱乐部在“比赛”表中出现的次数。我该怎么做呢?试试下面的方法
select sum(count) as Matches, Club from
(select count(*) as count, home_club as Club from matches group by home_club
union all
select count(*) as count, away_club as Club from matches group by away_club ) a
group by a.clubs
如果您想知道每个字段在
匹配项
表中出现了多少次,那么您需要去掉子查询中的联合
。union
将删除重复项
以下是如何获得计数:
select club, count(*) as NumAppears
from (SELECT home_club AS club FROM matches
UNION ALL
SELECT away_club FROM matches
) m
group by club;
注意,
UNION
被替换为UNION ALL
我认为这一个只计算他们在“俱乐部”结果集中的实例数,而不计算在匹配表中的实例数。每行返回1。看看将UNION
更改为UNION All
(以防止删除重复的俱乐部名称)是否奏效。是的,我的意思是,不知怎么的,我忘了。
select club, count(*) as NumAppears
from (SELECT home_club AS club FROM matches
UNION ALL
SELECT away_club FROM matches
) m
group by club;