select子句中的列名必须为分组列或列函数,分组查询 group by

发布时间:2020-03-12  栏目:数据  评论:0 Comments

来看个实例mysql 如何 按name 分组 总括:
有多少个是和否,有微微个是和否,还会有稍微个

 

你或者感兴趣的文章:

  • MySQL中对表连接查询的回顾优化学科
  • MySQL中着力的多表连接查询教程
  • 经文mysql连接查询例题
  • 精解MySql基本查询、连接查询、子查询、正则表明查询
  • MySQL笔记之连接查询详明
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句State of Qatar介绍
  • MySQL查询优化:用子查询代替非主键连接查询实例介绍
  • MySQL查询优化:连接查询排序浅谈
  • MySQL中distinct与group by语句的一对比较及用法讲授
  • MySQL中Distinct和Group By语句的中坚使用教程

分组查询 group by group by 属性名 [having 条件表明式][ with rollup]
“属性名 ”指依据该字段值…

  • WHERE:是在举行GROUP
    BY操作从前开展的过滤,表示从整个数目里面筛选出一部分的多少,在WHERE之中无法动用总计函数;
  • HAVING:是在GROUP
    BY分组之后的再迈过滤,能够在HAVING子句中选用总结函数;

总结的mysql教程 分组总括语句实例代码/*id name code_id code_name
is_true score1 张三 1 帅气 是 52 张三 2 阔气 是 43 张三 1 帅气 是 44
张三 2 阔气 否 3 5 李四 1 帅气 是 56 李四 2 阔气 是 3

 

安详严整MySQL中的分组查询与连接查询语句,详细解释mysql

分组查询 group by group by 属性名 [having 条件表明式][ with rollup]
“属性名 ”指依照该字段值举行分组;“having 条件发挥式
”用来界定分组后的体现,满意条件的结果将被呈现;with rollup
将会在富有记录的最后加上一条记下,该记录是上边装有记录的总量。

1)单独使用
group by 单独接受,查询结果只体现三个分组的一条记下。
实例:

select * from employee group by sex;

将只体现孩子两条记下。

2)与group_concat()函数一同行使
各种分组中钦点字段值都显得出来
实例:

select sex,group_concat(name) from employee group by sex;

来得结果中“女”会彰显全体sex为“女”的名字name

sex | group_concat(name)
女 | 小红,小兰
男 | 张三,王五,王六

3)与聚焦函数一同使用
实例:

select sex,count(sex) from employee group by sex;

结果:

sex | count(num)
女 | 1
男 | 3

count()为总计个数的不二诀要。

4)与having一起行使
“having条件表达式”,能够限制出口结果。独有满意条件表达式的结果才显得。
实例:

select sex,count(sex) from employee group by sex having count(sex) >= 3;

结果:

sex | count(sex)
男 | 3

“having条件说明式”功效于分组后的记录。

5)按多字段实行分组

select * from employee group by d_id,sex;

新葡京32450网址,询问结果先按d_id分组,再按sex实行分组

6) 与with rollup一齐利用
运用with
rollup将会在装有记录的最后加上一条记下,这条记下是下边装有记录的总的数量
实例:

select sex,count(sex) from employee group by sex with rollup;

结果:

sex | count(sex)
女 | 1
男 | 5
null | 6

万一是字符串的话,比方姓名就能够变动“张三,李四,王五”那类别型的结果,即name总和。

连年查询 将多少个及八个以上的表连接起来选取所需数据。

1)内连接查询:
当五个表中有着雷同意义的字段值相等时,就询问出该条记录。
实例:

复制代码 代码如下:

select num,name,employee.d_id,age,d_name from employee,department
where employee.d_id = department.d_id

因字段名相近,所以取d_id字段值时最棒钦定哪张表的字段。

2)外接连查询
select 属性名列表 from 表名1 left|right join 表名2 on
表名1.属性名1=表名2.属性名2;
左连接查询:
扩充左连接查询时,能够识破表名1中所指的表中全部记录。而表名2所指表中,只好查询出协作的笔录。
实例:

复制代码 代码如下:
select num,name,employee.d_id,age,d_name from employee left join
department on employee.d_id = department.d_id;

右连接查询:
与左连接相反,能够查询出表名第22中学的的具备记录,而表名1中所指的表中,只询问出协作的记录。

PS:使用集结函数查询 会集函数包含count(),sum(),avg(),max()和min()。
1)count()函数
总计记录条数
实例:

select count(*) from employee;

与group by一同使用

select d_id,count(*) from employee group by d_id;

上述语句会先分组后总结。

2) sum()函数
sum()函数是求和函数
实例:

select num,sum(score) from grade where num= 1001;

select num,sum(score) from grade group by num;

sum()只好计算数值类型字段。
3)avg()函数
avg()函数是求平均值函数。
实例:

select avg(age) from employee;

select course,avg(score) from group by course;

4)max(),min()函数
求最大值和微小值。
实例:
select max(age) from employee;
select num,course,max(score) from grade group by course;
对此字符串的最大值难题,max()函数是采纳字符对应的ascii码进行估测计算的。

 1 010302 3013 212 2120  
2 010302 3016 75 750  
3 010302 3017 37 370  
4 010302 3023 74 740  
5 010302 3024 115 1150  
6 010302 3043 82 820  
7 010302 3048 53 530  
8 010302 3107 18 180  
9 010302 3109 5 50  
10 010302 小计: 671 6710  
11 010303 3019 33 330  
12 010303 3020 47 470  
13 010303 3027 39 390  
14 010303 3029 52 520  
15 010303 3030 36 360  
16 010303 3044 119 1190  
17 010303 3046 68 680  
18 010303 3077 16 160  
19 010303 3092 4 40  
20 010303 3106 10 100  
21 010303 小计: 424 4240  
22 010304 3018 25 250  
23 010304 3022 219 2190  
24 010304 3031 38 380  
25 010304 3032 58 580  
26 010304 3039 69 690  
27 010304 3053 29 290  
28 010304 3081 38 380  
29 010304 3087 48 480  
30 010304 3105 19 190  
31 010304 3108 8 80  
32 010304 小计: 551 5510  
33 010305 3014 70 700  
34 010305 3035 27 270  
35 010305 3036 66 660  
36 010305 3038 10 100  
37 010305 3042 35 350  
38 010305 3047 52 520  
39 010305 3051 11 110  
40 010305 3054 166 1660  
41 010305 3076 42 420  
42 010305 3078 24 240  
43 010305 小计: 503 5030  
44 010306 3004 5 50  
45 010306 3008 30 300  
46 010306 3009 10 100  
47 010306 3055 4 40  
48 010306 小计: 49 490  
49 010308 3011 111 1110  
50 010308 3026 80 800  
51 010308 3034 44 440  
52 010308 3041 117 1170  
53 010308 3045 325 3250  
54 010308 3050 103 1030  
55 010308 3052 47 470  
56 010308 3079 71 710  
57 010308 3086 53 530  
58 010308 3097 4 40  
59 010308 小计: 955 9550  

*/

有个别工作者消息表结构和数目如下:

 

select name, sum(if(code_name=’帅气’ and is_true=’是’,1,0)),
sum(if(code_name=’帅气’ and is_true=’否’,1,0)),
sum(if(code_name=’阔气’ and is_true=’是’,1,0)),
sum(if(code_name=’阔气’ and is_true=’否’,1,0)), count(*)from
table1group by name

  

示例:

相关文章

留下评论

网站地图xml地图