王从伟玄铁二
2025-2-8 08:59:43 发布在问答
【数据处理】 计算列sql聚合运算报错
使用sql做聚合值计算列,使用该值时出现了如下的错误: 报错.png


计算的sql如下:
计算列.png

想要实现的效果为【报表货币值】求和 除以 【工时】去重后求和 ,因为工时有大量重复的:
1.png

应该怎么实现,谢谢。
196
23
精彩评论23
阿姆斯特朗炮铂金四
发表于 2025-2-8 09:09:18 显示全部楼层
group中不能写distinct的,你可以在sql输出的时候,单独计算出一个去重后的汇总工时,到时候直接用min工时进行计算
回复

使用道具 2#

王从伟玄铁二 回复阿姆斯特朗炮铂金四
发表于 2025-02-08 09:43:27
我需要保留这些明细为后续做过滤筛选用,因为有多个图共用这个数据集,你这个思路一个分组没问题,多个分组还是无法做运算。
回复

阿姆斯特朗炮铂金四 回复王从伟玄铁二
发表于 2025-02-08 11:13:05
我的意思是在sql列输出的时候多输出一列,用于计算用,原始列保留
回复

王从伟玄铁二 回复阿姆斯特朗炮铂金四
发表于 2025-02-08 15:34:49
恩,思路没问题,我在数据库中做了平均处理,然后增加了一列,把原始数据拼接上了这列,可以满足需求了
回复

防超铂金三
发表于 2025-2-8 09:35:17 显示全部楼层
本帖最后由 防超 于 2025-2-8 09:38 编辑

工时放到维度列
回复

使用道具 3#

王从伟玄铁二 回复防超铂金三
发表于 2025-02-08 09:39:39
我是这么想的,通过sql语句可以看出我就是这个思路,但是永洪不支持啊
回复

王从伟玄铁二 回复防超铂金三
发表于 2025-02-08 09:46:08
不行,问题出在不让用distinct
回复

防超铂金三 回复王从伟玄铁二
发表于 2025-02-08 10:25:22
原因是工时和报表货币值都是度量,分组或者去重是需要一个维度列
回复

展开更多回复
yhbi老6了铂金二
发表于 2025-2-8 13:12:00 显示全部楼层
sql语法应该会派发的数据库执行,你这个原理感觉没有问题,sum(distinct(  col[''] ))改sum( distinct col[''] ) 试试看?可能是 sqlaerver不支持带括号的写法
回复

使用道具 4#

阿姆斯特朗炮铂金四 回复yhbi老6了铂金二
发表于 2025-02-08 13:26:21
你这个直接就不可以,不用看哈哈,如果去重,只能新写个select,再去去重,去重,然后聚合在通过distinct进行去重,逻辑上都不对
回复

yhbi老6了铂金二 回复阿姆斯特朗炮铂金四
发表于 2025-02-08 13:29:22
select Dosh_status,sum( distinct time_diff_m) from db.table group by Dosh_status 这种语法是可以跑过去的,只是不知道为什么bi会检查语法错误
回复

阿姆斯特朗炮铂金四 回复yhbi老6了铂金二
发表于 2025-02-08 13:59:27
bi也是走的数据库引擎,有些也莫名其妙的报错,按说应该从日志里找到执行计划看看,再实在不行就怪玄学吧哈哈
回复

展开更多回复
yhbi老6了铂金二
发表于 2025-2-8 13:13:46 显示全部楼层
本帖最后由 yhbi老6了 于 2025-2-8 13:26 编辑

好像也是不行,只能另辟蹊径了
回复

使用道具 5#

王从伟玄铁二 回复yhbi老6了铂金二
发表于 2025-02-08 13:32:19
感谢回复,但这个是在数据库中的写法,不是永洪BI计算列中的写法
回复

王从伟玄铁二 回复yhbi老6了铂金二
发表于 2025-02-08 15:36:00
我拼接了一个字段,搞定了
回复

yhbi老6了铂金二 回复王从伟玄铁二
发表于 2025-02-08 15:39:55
哈?what?什么操作?惊呆了老铁
回复

展开更多回复
高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
100W

用户等你来哦

Copyright   ©2012-2025  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部