VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3493|回复: 20

group by 问题

[复制链接]

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-22 12:40:01 | 显示全部楼层 |阅读模式
大家好,我在做GROUP by的时候出现的问题,我要求
select a,b,c,sum(num) group by a,b 其中c如果不加入汇总字段,就出现问题,但是加进去,又很耗时,请问有什么好的解决办法,我的字段要可能不至3个,select a,b,c,e,f,g ,sum(num) group by a,b 是不是必须要在后面加入所有的字段啊
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-1 13:45:02 | 显示全部楼层
select a,b,min(c),sum(num) group by a,b
看你具体需求
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-1 15:45:01 | 显示全部楼层
是不是所有的字段都加上min 吗?我要求这段SQL返回我表中所有的字段里的数据啊!如果在group by后面加上所有的字段,耗时太大了!
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-2-1 15:54:01 | 显示全部楼层
指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
回复

使用道具 举报

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-2-1 16:00:01 | 显示全部楼层
如果不加C列
只有指定聚合函数(sum,min,max,count,avg,stdev....)
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-1 16:54:01 | 显示全部楼层
如果是我遇到这问题,group by后面加上所有的字段是唯一的办法吗?
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-1 17:00:02 | 显示全部楼层
你没有理解分组的含义
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-1 20:36:02 | 显示全部楼层
是的,我可能不理解分组概念,但是我在项目上是碰到这个问题,就是我在绑定GRID的时候,我的GRID列一定要包含表中所有字段,在加上汇总的列,虽然我在GROUP by后面加上所有的字段,但是查询速度慢了!但我汇总的列只要两列!
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-1 22:45:01 | 显示全部楼层
汇总之后的列怎么与别的列怎么对应呢?如果别的列都相同的话,加上min或者max就可以了
另外,查询的字段增多本身就会影响效率。。
回复

使用道具 举报

1

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-2 09:27:01 | 显示全部楼层
谢谢prajna,SELECT C_CODE , C_NAME , SUBSTRing(F_CODE,P_NSTYLSTAR,P_NSTYLLEN)  FA_CODE , F_NAME   
      FA_NAME , F_PRICE  FA_PRICE , SUM(NUM_1)  NUM_1 , SUM(NUM_1 * F_PRICE)   
      SUM_1 GROUP BY C_CODE , FA_CODE ORDER BY C_CODE , FA_CODE
     FROM PERCUR1
这就是我的源码,C_code是店名代码,C_NAME是店面名称 ,FA_code是衣服代码,FA_NAME是服装名称,FA_PRICE 是价格,NUM_1是件数,后一列是金额了,我需要就是这么多数据,但是我必须要在GROUP by后面加上所有的字段,才正确,而我只需要汇总C_code和FA_code,是不是一定要加上所有字段才可以,还是有其他好的解决方案!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表