group by 后面不能跟聚合函数,该怎么处理

group by 后面跟了一段函数

group by cast(MIN(a.fParaValue)as varchar(20))+'-'+cast((MIN(a.fParaValue)+(MAX(a.fParaValue)-MIN(a.fParaValue))/10 )as varchar(20)),需要按照这个进行分组

但是,group by 后面不能跟聚合函数,该怎么处理

zhaozhaode 发布于 2018-12-22 16:32 (编辑于 2018-12-22 16:33)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
4
KerydiaLv5中级互助
发布于2018-12-24 11:45

第一层别group by  给这个cast起一个别名

第二层,就是在外面再套一层 select * from () 然后再进行group by 

最佳回答
0
kangjavaLv2见习互助
发布于2018-12-22 16:38(编辑于 2018-12-22 16:40)

用嵌套,第一层先把

cast(MIN(a.fParaValue)as varchar(20))+'-'+cast((MIN(a.fParaValue)+(MAX(a.fParaValue)-MIN(a.fParaValue))/10 )as varchar(20)) 

的值求出来

第二层再group by

如果sql有疑惑,可以发出来,大家一起看看,调整一下

  • zhaozhaode zhaozhaode(提问者) select cast(MIN(a.fParaValue)as varchar(20))+\'-\'+cast((MIN(a.fParaValue)+(MAX(a.fParaValue)-MIN(a.fParaValue))/10 )as varchar(20)) as 分段 ,COUNT(b.sParaName) as number from dbo.Para_erecord a inner join dbo.Para_type b ON a.fkiParaID = b.ID INNER JOIN dbo.workstation_type AS c ON b.fkiWorkstationID = c.ID INNER JOIN dbo.zone_type AS d ON c.sZoneName = d.sZoneName where sParaName = \'电泳膜耐盐雾性\' group by cast(MIN(a.fParaValue)as varchar(20))+\'-\'+cast((MIN(a.fParaValue)+(MAX(a.fParaValue)-MIN(a.fParaValue))/10 )as varchar(20)) having a.fParaValue between MIN(a.fParaValue) and (MIN(a.fParaValue)+(MAX(a.fParaValue)-MIN(a.fParaValue))/10)
    2018-12-22 16:58 
  • zhaozhaode zhaozhaode(提问者) 我是想找出参数的最大值跟最小值后,对它进行分段,比如分十段,找出最大值最小值除以10 然后统计值每个分段内的个数 这个是统计第一个分段的数量 比如最大值1300 最小值1100,现在就是统计1100到1120之间的个数
    2018-12-22 16:58 
最佳回答
0
flyingsnakeLv6资深互助
发布于2018-12-24 09:42

image.png

帆软高级分组就可以了

  • 4关注人数
  • 1327浏览人数
  • 最后回答于:2018-12-24 11:45
    请选择关闭问题的原因
    确定 取消
    返回顶部