8.mysql 分组查询(tcy)

分组查询

用途:汇总统计多条结果(简单查询无法做到),常和聚合函数一起使用
格式:slect 要显示的结果字段 from tb_name [where 条件] group by 分组字段 [ordey by 字段 asc[|desc]];

参数:
1)要显示的结果字段:
   id,user,count(id),sum(id),avg(id),min(id),max(id),group_concat(分组字段),…

  说明:
      group_concat(分组字段):将分组字段中的每个值都显示出来
      显示的结果类型类似'm1901,m1901,m1901,m1901'
2)分组字段:字段1,字段2,…;先按字段1分组,当字段1的值相等时在按字段2分组

实例:

SELECT 行业, avg(open) FROM tb_name group by 行业;#分组列一般按大类类别进行
SELECT 行业,分类,name,count(open),sum(open),avg(open),min(open),max(open) FROM tb_name group by 分类;
select 行业,分类,name,count(open),avg(open) from tb_name 
       where open is not null group by name order by avg(open) desc;
select 行业,分类,name,vol from tb_name  group by name,vol,行业; #多个字段分组
select 行业,分类,name,vol,group_concat(name) from tb_name  group by name;#name必为分组字段


No    行业       类      name     open    vol

'1',  '农产品', '豆粕', 'm1901', '11.2', '100'
'2',  '农产品', '豆粕', 'm1901', '12.5', '105'
'3',  '农产品', '豆粕', 'm1901', '13',   '200'
'4',  '农产品', '豆粕', 'm1905', '12.5', '300'
'5',  '农产品', '豆粕', 'm1905', '14.3', '400'
'6',  '农产品', '豆粕', 'm1909', '14.5', '500'
'7',  '农产品', '玉米', 'c1909', '20.2', '300'
'8',  '农产品', '玉米', 'c1912', '21.3', '200'
'9',  '工业品', 'pb',  'pb1901', '30.2', '500'
'10', '工业品', 'pb',  'pb1901', '32.1', '700'
'11', '工业品', 'Sn',  'Sn1905', '40.5', '900'
'12', '工业品', 'Sn',  'Sn1905', '42.3', '200'
'13', '工业品', 'Au',  'Au1905', '50.2', '200'
'14', '工业品', 'Au',  'm1901',  '50.2', '200'

int    char      char  char      float   int

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/86795775