MySQL 怎样分组查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 怎样分组查询相关的知识,希望对你有一定的参考价值。

mysql GROUP BY 子句

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

具体语法参考:

from 树懒学堂 - 一站式数据知识平台



参考技术A 分组查询:

SELECT 要显示的列 FROM 表 GROUP BY 要分组的列
如:SELECT sname,age,address FROM student GROUP BY address
上面就是把地址address列进行分组,显示姓名、年龄还有地址
分组查询加条件:
SELECT 要显示的列 FROM 表 WHERE 条件 GROUP BY 要分组的列
如:SELECT sname,age,address FROM student WHERE age<17 GROUP BY address
上面就是把地址address列进行分组,符合年龄小于17岁的才显示出符合的姓名、年龄还有地址
参考技术B   mysql
  与
  oracle
  中分组、聚合函数的区别!
  
  
  
  今天需要这样一句
  sql
  :先用
  group by
  进行分组,然后利用聚合函数
  count
  或者
  sum
  进行计算,并显示
  其它的辅助信息。
  
  在
  mysql
  环境中,我模拟如下环境:
  
  CREATE TABLE `room` (
  
  
  `rid` varchar(5) default NULL,
  
  
  `rname` varchar(5) default NULL,
  
  
  `pid` int(11) default NULL,
  
  
  `seq` int(11) NOT NULL auto_increment,
  
  
  PRIMARY KEY
  (`seq`)
  
  
  ) ENGINE=InnoDB DEFAULT
  CHARSET=utf8
  
  房间表,
  seq
  房间入住序号
  (主键)
  ,
  rname
  为房间名,这里不考虑第三范式
  
  情景:人住房间,
  
  统计某个房间某个人住的次数
  
  
  
  用户表,客人的信息
  
  CREATE TABLE `user1` (
  
  
  `ID` int(11) NOT NULL auto_increment,
  
  
  `USERNAME` varchar(50) default '',
  
  
  `PASSWORD` varchar(50) default '',
  
  
  PRIMARY KEY
  (`ID`)
  
  
  ) ENGINE=InnoDB DEFAULT CHARSET=gbk
  
  Mysql
  中语句如下:
  
  select count(u.username)
  ,
  r.rname
  ,r.rid,r.pid
  
  from room r,user1 u
  
  where r.pid=u.id
  
  group by r.rid,r.pid
  
  这里
  r.rname
  并没有出现在
  group by
  子句、聚合函数中,但是
  MYSQL
  中仍然能够执行、列
  出数据。
  
  但是,在
  ORACLE
  中,却不能!
  !
  !
  !
  
  Oracle
  环境中:
  
  /*
  
  --
  显示:
  Ora-00979 not a ORDER BY expression
  
  --
  因为:
  order by
  后边的
  c.channel_code
  不在
  ORDER BY
  子句中
  
  
  select count(c.channel_name),m.media_name
  
  from channel c,media m
  
  where c.media_code = m.media_code
  
  group by c.media_code,m.media_name
  
  order by
  c.channel_code
  
  
  
  --
  显示:
  Ora-00979 not a GROUP BY expression
  
  --
  因为:
  group by
  或者聚合函数中没有包含
  c.channel_name
  
  select count(c.channel_name),m.media_name,
  c.channel_name
  
  from channel c,media m
  本回答被提问者和网友采纳
参考技术C 查询每个部门的部门编号和每个部门的工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
查询每个部门的部门编号以及每个部门的人数:
SELECT deptno,COUNT(*)
FROM emp
GROUP BY deptno;
查询每个部门的部门编号以及每个部门工资大于1500的人数:
SELECT deptno,COUNT(*)
FROM emp
WHERE sal>1500
GROUP BY deptno;
参考技术D Group by 要分的组名字

mysql怎样查询一个表中所有数据

输出所有的字段及不使用谓词如distinct,limit等、不分组汇总、不附加任何筛选条件和实施任何连接即可检索出该表的所有数据。

例如下列语句:
select * from t1(* 号表示输出所有的字段)

Mysql如何查询表中的数据:

    选择需要进行查询的数据库的链接地址。

    在数据库链接地址中,找到需要查询的数据库,双击将其数据库打开,可以看到数据库的颜色会由灰色变成彩色。

    点击上方的‘查询’功能,然后点击箭头所指的‘创建查询’功能。

参考技术A 输出所有的字段及不使用谓词如distinct,limit等、不分组汇总、不附加任何筛选条件和实施任何连接即可检索出该表的所有数据。例如下列语句:

select * from t1;

* 号表示输出所有的字段本回答被提问者采纳

以上是关于MySQL 怎样分组查询的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询分组中最大的值

分组查询操作(MySQL)

分组查询操作(MySQL)

MySQL分组查询

MySQL笔记--MySQL分组函数和分组查询

mysql 查询排序分组问题