簡體   English   中英

如何獲得每個不同類別的總數

[英]How to get the total count for each distinct category

我想獲得位置的非重復行,並獲得特定氏族的玩家總數以及明星玩家的總數。 請參閱下面的更多解釋

table p:
player_id    stars
1            10
2            10
3            10
4            10

table a:
player_id    location   clan
1               egate   dragons
2               ngate   sabrelights
3               sgate   dragons
4               wgate   tigers
5               lgate   fireflies
6               lgate   fireflies
7               egate   dragons

這是我嘗試過的

    SELECT DISTINCT (CASE SUBSTR (location, 1, 1)
              WHEN 'e' THEN 'East'
              WHEN 'n' THEN 'North'
              WHEN 's' THEN 'South'
              WHEN 'w' THEN 'West'
              WHEN 'l' THEN 'Limbo'
              ELSE null
          END) loc
        ,clan clans  
        , sum (case when a.player_id IS NOT NULL THEN 1 ELSE 0 END) Total
        ,sum (case when p.stars = '10' THEN 1 ELSE 0 END) stars                                                                                            
        FROM   a
             left outer join p on p.PLAYER_ID = a.player_id 
                   group by SUBSTR (location, 1, 1),a.clan, p.STARS
            ,clan
           order by loc, clans

實際結果(錯誤):

LOC     CLANS    TOTAL  STARS
East    dragons     1   0
East    dragons     1   1
South   dragons     1   1
Limbo   fireflies   2   0
North   sabrelights 1   1
West    tigers      1   1

我想要什么(所需的輸出):

LOC     CLANS   TOTAL  STARS    
East    dragons     2   1
South   dragons     1   1
Limbo   fireflies   2   0
North   sabrelights 1   1
West    tigers      1   1

從 GROUP BY 子句中刪除p.stars

它使事情陷入困境,因為它正在為您的分組建立另一個不必要的細分。 它只出現在一個聚合 (SUM) 函數中,因此它不必出現在 group by 中,並且sum case when p.stars正確地計算玩家是否為明星sum case when p.stars ,您的sum case when p.stars

如果您想更好地了解這導致問題的原因,請將 p.stars 放回 group by 並作為 select 中的一列 - 您將看到分組鍵(不是聚合函數的列),它應該很明顯為什么它會導致出現分割行

如果星星是玩家贏得的星星數的整數計數,您可能希望將其設置為>= 10檢查 - 這比等檢查更強大,以防萬一它變得更高(除非 11+ 顆星意味着球員不再是明星球員..)。 此外,如果列是 int 則應與常量 int 而不是常量字符串( 10 rather than '10' )進行比較

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM