17回答

0收藏

分区总和

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

我想念什么?
, B. r! E+ `' U6 F7 ]9 A5 @这个查询一次又一次地返回重复的数据。对于一个完整的总数,计数是正确的,但我希望有一行,但我得到的值重复了大约40次。你有什么想法吗?
  k  P5 a( p# I# S6 rSELECT BrandId  SUM(ICount) OVER (PARTITION BY BrandId )   FROM Table WHERE DateId  = 20130618我明白了吗?* b& f3 k- U9 L6 c
BrandId ICount          42176222                     421762222                                                                                                                                                                                          4222121212121212121212172176262222222222222                                                                                                                                                                                                                                                                                                                                   我想念什么?; `3 I9 V: a8 e1 x+ J
由于整个查询如下:- a2 J9 m7 [+ Z+ N& j3 @
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哪个返回:
$ b: X  @4 _# `: ~/ f, H4 `6 rBrandId (No column name)    TotalICount Percentage2       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    762       421762              32239892    76我希望这种输出不需要使用不同的东西:
9 j5 ?1 u1 G! ~. nBrandId (No column name)    TotalICount Percentage                                                                                                                                                                                                                                                                                                                                                                                                              3222222222222222222222222223222322323232                                                                                                                                                                  
8 A6 Q% L7 h9 l/ v( D    解决方案:                                                                2 O6 q+ ?7 r9 I- J0 S
                                                                您可以使用DISTINCT删除这些PARTITION BY部分并使用GROUP BY:2 t& F. a" R% T7 E' E. m
SELECT BrandId  SUM(ICount)  TotalICount = SUM(ICount) OVER ()      Percentage = SUM(ICount) OVER ()*1.0 / SUM(ICount) FROM Table WHERE DateId  = 20130618GROUP BY BrandID不知道为什么用总数除以每个BrandID如果计数是错误的,并且想占总数的百分比,则将上述位置逆转为:
9 d: z- m- _! S0 F: K* s) b  `& ?8 XSELECT 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 | 显示全部楼层

找到啦 开心
回复

使用道具 举报

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

本版积分规则

29055 积分
9659 主题
热门推荐