回答

收藏

分区总和

技术问答 技术问答 100 人阅读 | 0 人回复 | 2023-09-14

我想念什么?
3 ]) i5 Z, m7 j& }4 G0 g这个查询一次又一次地返回重复的数据。对于一个完整的总数,计数是正确的,但我希望有一行,但我得到的值重复了大约40次。你有什么想法吗?
  b: Y; Z* t& XSELECT BrandId  SUM(ICount) OVER (PARTITION BY BrandId )   FROM Table WHERE DateId  = 20130618我明白了吗?2 s+ N: P, L) l5 l
BrandId ICount          42176222                     421762222                                                                                                                                                                                          4222121212121212121212172176262222222222222                                                                                                                                                                                                                                                                                                                                   我想念什么?2 j* L% {5 T% P5 I" l0 j
由于整个查询如下:% E7 k* ]* K+ D2 \( v8 Y+ I! F# g
SELECT BrandId  SUM(ICount) OVER (PARTITION BY BrandId)   TotalICount= SUM(ICount) OVER ()       SUM(ICount) OVER () / SUM(ICount) OVER (PARTITION BY BrandId)  as PercentageFROM Table WHERE DateId  = 20130618哪个返回:
% Q; I7 f. Y% ?1 I! t. tBrandId (No column name)    TotalICount Percentage2       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    76我希望这种输出不需要使用不同的东西:
; F4 Z* a' k2 \( zBrandId (No column name)    TotalICount Percentage                                                                                                                                                                                                                                                                                                                                                                                                              3222222222222222222222222223222322323232                                                                                                                                                                  
- r7 U1 j* F* w- a3 J4 E7 M+ h    解决方案:                                                               
% Y1 ?3 Y9 F# U. e7 G                                                                您可以使用DISTINCT删除这些PARTITION BY部分并使用GROUP BY:: K0 @4 L! j8 l% J# C
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount) OVER ()*1.0 / SUM(ICount) FROM Table WHERE DateId  = 20130618GROUP BY BrandID不知道为什么用总数除以每个BrandID如果计数是错误的,并且想占总数的百分比,则将上述位置逆转为:, @+ B! X. ^+ K3 x
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount)*1.0 / SUM(ICount) OVER ()     FROM Table     WHERE DateId  = 20130618    GROUP BY BrandID
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则