-5

我想计算 b 列中某个值的出现次数,并按 a 列分组:

IE 如果我有以下数据:

AB
1 2
1 3
1 2
1 4
2 2
2 3
2 2
2 4

我想返回以下内容:

美国广播公司
1 2 2
1 3 1
1 2 2
1 4 1
2 2 2
2 3 1
2 2 2
2 4 1

行。很抱歉,我没有添加我尝试过的内容。这是星期一,这是一个艰难的 7 月 4 日周。当我和她在病房里时,我的姑姑从癌症去世了。

SELECT a, b, C = Count(*) OVER (partition BY b) FROM yourtable;

我不知道为什么我没有尝试

SELECT a, b, C = Count(*) OVER (partition BY a, b) FROM yourtable;

按照建议或简单地加入子查询。我想这只是那些休息日之一。这个问题可以删除。

4

2 回答 2

3

你应该使用:

SELECT a, 
       b, 
       C = Count(*) 
             OVER ( 
               partition BY a, b) 
FROM   yourtable; 

请参阅带有演示的 SQL Fiddle

于 2013-07-08T16:40:29.930 回答
3

您可以使用相关子查询来获取结果:

SELECT a, b,
  (select count(*)
   from yourtable t1
   where t.a = t1.a
     and t.b = t1.b) c
FROM yourtable t

请参阅带有演示的 SQL Fiddle

于 2013-07-08T16:41:52.217 回答