求教分组随机取某一条数据[大数据量]

时间:2021-02-09 15:08:32
比如:表table,有以下列

city,code,value1,value2,value3,value4.
值如下:
025,'a',1,2,3,4
025,'b',2,3,4,5
010,'c',3,4,5,6
010,'d',5,6,7,8

想得到的结果是,按城市分组,获取value1,2,3,4列的总值,code随取一个
比如出来如下结果:
025,'a',3,4,7,9
101,'d',8,10,12,14

因为数据量比较大,希望能有比较高效的查询。

7 个解决方案

#1


不就是一个最基本的汇总sql么?

select city,max(code),sum(value1),sum(value2),sum(value3),sum(value4) from table group by city

#2


不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6

#3


就按city,fz1,fz2 分组,code和city另外整理一个对应表关联即可

#4


select fz1,fz2,code,sum(value1),sum(value2) from table group by fz1,fz2 基本的查询语句!

#5


select city,max(code),fz1,fz2,sum(value1),sum(value2)
from table_name 
group by city,fz1,fz2,

#6


引用 2 楼 ms_py 的回复:
不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6


你给的结果不对吧

#7


引用 2 楼 ms_py 的回复:
不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6


你的结果完全看不懂

#1


不就是一个最基本的汇总sql么?

select city,max(code),sum(value1),sum(value2),sum(value3),sum(value4) from table group by city

#2


不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6

#3


就按city,fz1,fz2 分组,code和city另外整理一个对应表关联即可

#4


select fz1,fz2,code,sum(value1),sum(value2) from table group by fz1,fz2 基本的查询语句!

#5


select city,max(code),fz1,fz2,sum(value1),sum(value2)
from table_name 
group by city,fz1,fz2,

#6


引用 2 楼 ms_py 的回复:
不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6


你给的结果不对吧

#7


引用 2 楼 ms_py 的回复:
不好意思,描述有些问题。
比如:表table,有以下列

city,code,fz1,fz2,value1,value2
值如下:
025,'a','fz1','fz2',1,2
025,'','fz1','fz2',1,2
025,'','fz2','fz3',2,3
010,'','fz1','fz2',3,5
010,'','fz1','fz2',3,4
010,'d','fz2','fz4',5,6

想得到的结果是,按城市,fz1,fz2列分组,获取value1,2列的总值,code随取一个[因为有时候一个分组下的code会出现空,但在另一个分组下不为空,就是说city和code是对应起来的,但有时候city会对应好几个code,code也有空的情况]
比如出来如下结果:
025,'a','fz1','fz2',2,4
025,'a','fz2','fz3',3,4
010,'d','fz1','fz2',6,9
010,'d','fz1','fz2',5,6


你的结果完全看不懂