2016-06-10 115 views
1

我想簡單地添加一列到下面給出的結果來自「select count(*)... group by possession」。所以它應該仍然保留相同數量的行,並且添加了這個列。有人告訴我,尋找到一個橫向加入,但我不知道如何做到這一點尤其是在具有CTE我查詢的上下文SQL - 添加列與計數()

QUERY

select 
* 
from (
     with possession_change as (
     select 
      (lag(possession,1) over (order by id)) as last_possession, 
      possession, 
      clock 
     from plays 
     where 
      game_id in (583615) 
      and league = 3 
      and period in (0,1) 
     ) 
     select * from possession_change 
    ) stuff 
; 

成績

last_possession | possession | clock 
-----------------+------------+------- 
       |   0 | 3600 
       0 |   0 | 3600 
       0 |   0 | 3600 
       0 |   0 | 3600 
       0 |   1 | 3561 
       1 |   1 | 3561 
       1 |   1 | 3561 
       1 |   1 | 3449 
       1 |   1 | 3449 
       1 |   0 | 3396 
       0 |   0 | 3396 
       0 |   0 | 3396 

理想的結果

last_possession | possession | clock | possession_count 
-----------------+------------+------- 
       |   0 | 3600 | 7 
       0 |   0 | 3600 | 7 
       0 |   0 | 3600 | 7 
       0 |   0 | 3600 | 7 
       0 |   1 | 3561 | 5 
       1 |   1 | 3561 | 5 
       1 |   1 | 3561 | 5 
       1 |   1 | 3449 | 5 
       1 |   1 | 3449 | 5 
       1 |   0 | 3396 | 7 
       0 |   0 | 3396 | 7 
       0 |   0 | 3396 | 7 

回答

2

您可以使用count over

select 
    lag(possession,1) over (order by id) as last_possession, 
    possession, 
    clock, 
    count(*) over (partition by possession) cnt 
from plays 
where 
    game_id in (583615) 
    and league = 3 
    and period in (0,1)