嵌套计数查询

时间:2012-09-18 16:17:29

标签: sql count nested-query

我需要一些帮助来输出这样的输出:

CityName
CITY A
CITY B
CITY C
CITY A
CITY A
CITY A
CITY C

从这个例子中,每个城市的数量是:CITY A = 4,CITY B = 1,CITY C = 2

如何在其旁边添加每个CityName的 (嵌套)计数 ,以便输出如下所示:

CityName   CityCount
CITY A              4
CITY B              1
CITY C              2
CITY A              4
CITY A              4
CITY A              4
CITY C              2

任何反馈都不仅仅是赞赏!


我的下表包含以下字段:

CitiesList - > CityName | | 日期

CitiesList 的输出如下所示:

CITYNAME | | 日期
CITY A TOWN B 2012年7月10日
CITY A TOWN D 2012年7月10日
CITY B TOWN C 2012年7月11日
CITY C TOWN C 2012年7月11日
CITY D TOWN 2012年7月12日
CITY D TOWN C 2012年7月13日
CITY D TOWN B 2012年7月13日
CITY E TOWN C 2012年7月13日
.....

我想在此输出中添加一个额外的字段( TownCount ),其中每个TOWN在垃圾邮件时间中出现的次数(本例中为7月10日 - 7月13日)。输出应如下所示:

CITYNAME | | 日期 | TownCount
CITY A TOWN B 2012年7月10日2
CITY A TOWN D 2012年7月10日1
CITY B TOWN C 2012年7月11日4
CITY C TOWN C 2012年7月11日4
CITY D TOWN A 2012年7月12日1
CITY D TOWN C 2012年7月13日4
CITY D TOWN B 2012年7月13日2
CITY E TOWN C 2012年7月13日4
.....

1 个答案:

答案 0 :(得分:4)

您没有提供有关您正在使用的系统类型的详细信息,但在SQL中您可以使用:

select t1.cityname, t2.CityCount
from yourtable t1
left join
(
    select count(*) CityCount, cityname
    from yourtable
    group by cityname
) t2
    on t1.cityname = t2.cityname

请参阅SQL Fiddle with Demo

根据您的修改,您似乎想要执行以下操作:

select t1.cityname, t1.town, t1.date, t2.TownCount
from yourtable t1
left join
(
    select count(*) TownCount, Town
    from yourtable
    group by Town
) t2
    on t1.town = t2.town

请参阅SQL Fiddle with Demo