1回答

0收藏

分区总和

技术问答 技术问答 1704 人阅读 | 1 人回复 | 2023-09-14

我想念什么?
; f) {4 q- Q4 P& _: l5 ~6 z$ K) E这个查询一次又一次地返回重复的数据。对于一个完整的总数,计数是正确的,但我希望有一行,但我得到的值重复了大约40次。你有什么想法吗?2 f* o. M. s% q- U2 n
SELECT BrandId  SUM(ICount) OVER (PARTITION BY BrandId )   FROM Table WHERE DateId  = 20130618我明白了吗?
7 c$ Z3 k6 |! h2 J0 v# gBrandId ICount          42176222                     421762222                                                                                                                                                                                          4222121212121212121212172176262222222222222                                                                                                                                                                                                                                                                                                                                   我想念什么?
5 d. ?7 b" `$ L4 r5 {5 q, F由于整个查询如下:
* K) q3 L# T& M1 J/ n8 f3 ZSELECT 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哪个返回:
0 X0 ?& ]8 Z3 l6 WBrandId (No column name)    TotalICount Percentage2       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    76我希望这种输出不需要使用不同的东西:
4 o9 }; M- m' b8 K9 C% vBrandId (No column name)    TotalICount Percentage                                                                                                                                                                                                                                                                                                                                                                                                              3222222222222222222222222223222322323232                                                                                                                                                                  ; ]( W2 {5 o; Q0 f6 e: \
    解决方案:                                                               
2 b; |  ]& d9 u. x2 r! R: I                                                                您可以使用DISTINCT删除这些PARTITION BY部分并使用GROUP BY:8 U! v0 o) X* r' ~% u  Z$ g9 V
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount) OVER ()*1.0 / SUM(ICount) FROM Table WHERE DateId  = 20130618GROUP BY BrandID不知道为什么用总数除以每个BrandID如果计数是错误的,并且想占总数的百分比,则将上述位置逆转为:: G3 t" w3 F# l! L) y( ?( O. r
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount)*1.0 / SUM(ICount) OVER ()     FROM Table     WHERE DateId  = 20130618    GROUP BY BrandID
分享到:

回答|共 1 个

AnthonyInsut 该用户已被删除

发表于 2024-3-17 19:08:48 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则