1

对于输出如下内容的查询,我需要一些帮助:

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    |   城镇      |      日期
城市 A 城市 B 2012 年 7 月 10 日
城市 A 城市 D 2012 年 7 月 10 日
城市 B 城市 C 2012 年 7 月 11 日
城市 C 城市 C 2012 年 7 月 11 日
城市 D 城市 A 2012 年 7 月 12 日
城市 D 城市 C 2012 年 7 月 13 日
城市D 镇 B 2012 年 7 月 13 日
城市 E 镇 C 2012 年 7 月 13 日
.....

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

CityName    |   城镇      |      日期      |      TownCount
城市 A 城市 B 2012 年 7 月 10 日 2
城市 A 城市 D 2012 年 7 月 10 日 1
城市 B 城市 C 2012 年 7 月 11 日 4
城市 C 城市 C 2012 年 7 月 11 日 4
城市 D 城市 2012 年 7 月 12 日 1
城市 D 城市 C 2012 年 7 月 13 日 4
城市 D 镇 B 2012 年 7 月 13 日 2
城市 E 镇 C 2012 年 7 月 13 日 4
......

4

1 回答 1

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

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

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

于 2012-09-18T16:21:23.383 回答