这是我部门某人的要求,但是我很难在列中同时包含发生的总次数和行数。

为了简单起见,如下表:

Name    Location
Dave      Ohio
Sam       Ohio
James    Virginia
Fred     Idaho
Cindy   Virginia
John     Ohio


但是我需要它看起来像这样:

Name   Location   Total
Dave   Ohio        3
Sam    Ohio        3
John   Ohio        3
James  Virginia    2
Cindy  Virginia    2
Fred   Idaho       1


所以我的尝试:

select Name, Location, count(Location) as 'Total'
from table1
group by Location


给我

Name    Location    Total
Fred    Idaho         1
Dave    Ohio          1
John    Ohio          1
Sam     Ohio          1
Cindy   Virginia      1
James   Virginia      1

最佳答案

您可以使用窗口功能

select distinct name, location, count(*) over(partition by location)
from table1


这适用于MySQL >= 8

关于mysql - SQL对出现的次数进行计数,同时仍具有所有行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51143844/

10-11 04:48