VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: angelk1983

group by 问题

[复制链接]

1

主题

13

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-2-17 16:30:01 | 显示全部楼层
group by 的用法楼主好像没有理解
如果有sum max avg。。。等聚合参数的话,就必须有group by
大一个比方 你把某一样的字段的某一个值全部加起来,那么如果另外一个字段和它不一样系统就不会识别,应该加那一列
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-20 00:00:01 | 显示全部楼层
select TB.*,N.num1 from TB inner join (select a,b,sum(num)as num1  from TB group by a,b ) as N On N.a=TB.a order by N.a

这样的思路可能行,但是这个语句可能不正确.
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-8 20:15:01 | 显示全部楼层
恐怕没有太多好办法
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-14 18:45:01 | 显示全部楼层
支持gaara1985,把要分组的列做为子查询然后和原表做连接,但不一定内连接,可能用左连接也可能用右连接,看你的需要而定
回复

使用道具 举报

0

主题

22

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-3-16 22:00:01 | 显示全部楼层
select b.C_CODE , b.C_NAME , SUBSTRing(b.F_CODE,P_NSTYLSTAR,P_NSTYLLEN)  FA_CODE , b.F_NAME FA_NAME , b.F_PRICE  FA_PRICE , a.NUM_1 , a.SUM_1 from percur1 b inner join (select c_code,f_code,sum(num_1) num_1,sum(num_1*f_price) sum_1 from percur1 group by c_code,f_code) a on b.c_code=a.c_code and b.f_code=a.f_code

试下这个,不过,我不知道速度怎样。呵呵
回复

使用道具 举报

0

主题

22

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-3-20 10:00:02 | 显示全部楼层
最后漏了个 order by .... 呵呵
回复

使用道具 举报

1

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-3-20 12:45:01 | 显示全部楼层
select a,b ,sum(num)from table1 aaa group by a,b
union
select a,b,c from table1 bbb  group by a,b
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-3-20 14:15:01 | 显示全部楼层
从算法上来说,以上都对

不过,如果就这么几个字段,恐怕挪2、3个字段到子查询效率方面不会差太多。如果这样差别大的话,就应该在表结构设计上进行拆分(话外~)

况且,SUBSTRing(F_CODE,P_NSTYLSTAR,P_NSTYLLEN),我怀疑SUBSTRing(F_CODE,P_NSTYLSTAR,P_NSTYLLEN)相同的情况下F_CODE是不是也相同。如果不同,就要考虑对结果进行过滤或者在内层子查询就要SUBSTRing()了。。。
回复

使用道具 举报

0

主题

14

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-3-25 19:00:02 | 显示全部楼层
good question!
study~~~
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-28 14:00:02 | 显示全部楼层
如果查询的信息很多,速度是会很慢的,分组主要是合聚合函数一起使用,group by 后跟一到二个分组就行了,多了没有什么用,也达不到你想查询的效果。
    主要就是查询信息太多速度慢,建议你在查询的时候加上 top (查询的行数),或top 20 percent,显示百分比,就能快点。
    如果你的信息量很大的话那就没办法了。
回复

使用道具 举报

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

本版积分规则

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

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