17回答

0收藏

分区总和

技术问答 技术问答 1312 人阅读 | 17 人回复 | 2022-03-03

我想念什么?
7 u8 w8 {9 Y7 t; @( ^8 j8 X这个查询一次又一次地返回重复的数据。对于一个完整的总数,计数是正确的,但我希望有一行,但我得到的值重复了大约40次。你有什么想法吗?$ T3 C, E% r8 X: O% ?
SELECT BrandId  SUM(ICount) OVER (PARTITION BY BrandId )   FROM Table WHERE DateId  = 20130618我明白了吗?
3 k( z& ^+ t  Y. gBrandId ICount          42176222                     421762222                                                                                                                                                                                          4222121212121212121212172176262222222222222                                                                                                                                                                                                                                                                                                                                   我想念什么?' ]2 C) d1 K: {+ C
由于整个查询如下:; o$ Q% M- p  r' Z0 v
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哪个返回:
( Y+ F7 v! L9 G& R% ?2 G. HBrandId (No column name)    TotalICount Percentage2       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    76我希望这种输出不需要使用不同的东西:
( T6 i$ P7 `- i1 I: _- f- OBrandId (No column name)    TotalICount Percentage                                                                                                                                                                                                                                                                                                                                                                                                              3222222222222222222222222223222322323232                                                                                                                                                                  4 a" v  F, M6 U+ D, Y
    解决方案:                                                               
: e$ H$ q1 f: U                                                                您可以使用DISTINCT删除这些PARTITION BY部分并使用GROUP BY:
8 h0 o( `( f( L3 t: d0 q1 J- v9 a: qSELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount) OVER ()*1.0 / SUM(ICount) FROM Table WHERE DateId  = 20130618GROUP BY BrandID不知道为什么用总数除以每个BrandID如果计数是错误的,并且想占总数的百分比,则将上述位置逆转为:7 h, U: s: i7 f; f# t" \
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount)*1.0 / SUM(ICount) OVER ()     FROM Table     WHERE DateId  = 20130618    GROUP BY BrandID
分享到:
回复

使用道具 举报

回答|共 17 个

曾冰

发表于 2022-3-3 23:41:00 | 显示全部楼层

very good
回复

使用道具 举报

江郎才尽了没

发表于 2022-3-5 14:11:27 | 显示全部楼层

珍爱生命,果断回帖。
回复

使用道具 举报

余大侠

发表于 2022-3-6 15:19:04 | 显示全部楼层

有空一起交流一下
回复

使用道具 举报

汩汩山水

发表于 2022-3-7 09:41:00 | 显示全部楼层

我只是路过,不发表意见
回复

使用道具 举报

旮旯旭

发表于 2022-3-8 05:07:48 | 显示全部楼层

LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

云销雨霁

发表于 2022-3-8 16:22:51 | 显示全部楼层

我了个去,顶了
回复

使用道具 举报

一飞一宏

发表于 2022-3-8 23:39:01 | 显示全部楼层

楼猪V5啊
回复

使用道具 举报

飞一样的谜

发表于 2022-3-9 05:35:15 | 显示全部楼层

1v1飘过
回复

使用道具 举报

袁志翔

发表于 2022-3-9 10:58:24 | 显示全部楼层

找到啦 开心
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29060 积分
9660 主题
热门推荐