首页 > 数据库 >mysql 分组查询

mysql 分组查询

时间:2023-04-05 11:35:19浏览次数:25  
标签:salary GROUP 查询 department 分组 mysql employee NULL SELECT

创建表 employee

CREATE TABLE `employee` (
  `id` int(11) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `gender` varchar(1) DEFAULT NULL,
  `hire_date` date DEFAULT NULL,
  `salary` decimal(10,0) DEFAULT NULL,
  `performance` double(255,0) DEFAULT NULL,
  `manage` double(255,0) DEFAULT NULL,
  `department` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `employee` VALUES (1001, '张三', '男', '1991-7-25', 2000, 200, 500, '营销部'); INSERT INTO `employee` VALUES (1002, '李四', '男', '2017-7-5', 4000, 500, NULL, '营销部'); INSERT INTO `employee` VALUES (1003, '王五', '女', '2018-5-1', 6000, 100, 5000, '研发部'); INSERT INTO `employee` VALUES (1004, '赵六', '男', '1991-6-1', 1000, 3000, 4000, '财务部'); INSERT INTO `employee` VALUES (1005, '孙七', '女', '2018-3-23', 8000, 1000, NULL, '研发部'); INSERT INTO `employee` VALUES (1006, '周八', '男', '2010-9-8', 5000, 500, 1000, '人事部'); INSERT INTO `employee` VALUES (1007, '吴九', '女', '2017-7-5', 8000, 601, NULL, '研发部'); INSERT INTO `employee` VALUES (1008, '郑十', '女', '2014-4-6', 4000, 1801, NULL, '人事部');

对所有员工的薪水进行排序
SELECT * from employee  ORDER BY salary desc;
查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
SELECT * from employee ORDER BY salary desc,id asc;
查询employee表中记录数:
SELECT count(*) as '总数' FROM employee;
查询员工表中有管理费的人数
SELECT * from employee where manage is not NULL;
SELECT count(manage) from employee;
查询员工表中月薪大于2500的人数:
SELECT  * from employee WHERE salary >2500;
统计月薪与绩效之和大于5000元的人数:
SELECT * from employee where IFNULL(salary,0)+IFNULL(performance,0)>5000;
查询有绩效的人数,和有管理费的人数:
SELECT COUNT(performance),COUNT(manage) from employee;

查询每个部门的部门名称和每个部门的工资和
SELECT department,GROUP_CONCAT(salary),sum(salary) from employee GROUP BY department;
查询每个部门的部门名称以及每个部门的人数
SELECT department,COUNT(*) from employee GROUP BY department;
查询每个部门的部门名称以及每个部门工资大于1500的人数
SELECT department,COUNT(*) from employee WHERE salary >1500 GROUP BY department;

查询工资大于1500人数按照部门分组
SELECT department,GROUP_CONCAT(name) from employee WHERE salary >1500 GROUP BY department;
SELECT department,GROUP_CONCAT(name),salary from employee GROUP BY department HAVING salary>1500; #having 字段必须select 出来

查询个人工资大于2000,部门工资和>6000的部门名称
SELECT department,GROUP_CONCAT(salary),SUM(salary) as total FROM employee WHERE salary>2000  GROUP BY department HAVING total >5000;

查询个人工资、绩效、管理费之和大于7000的人员姓名,按照部门进行分类。
SELECT department,GROUP_CONCAT(name) from employee 
where IFNULL(salary,0)+IFNULL(performance,0)+IFNULL(manage,0)>7000 
GROUP BY department; 

SELECT department,GROUP_CONCAT(name) from (
    SELECT  *,IFNULL(salary,0)+IFNULL(performance,0)+IFNULL(manage,0) as total  from employee   HAVING total>7000
)as newt  GROUP BY department;

 

标签:salary,GROUP,查询,department,分组,mysql,employee,NULL,SELECT
From: https://www.cnblogs.com/hydy/p/17289018.html

相关文章

  • MySQL四种日志binlog/redolog/relaylog/undolog
    优质博文:IT-BLOG-CN一、binlogbinlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下:[[email protected]]#mysqlbinlogmysql-binlog.0000012..........#at523#......
  • 排序查询
    DQL-排序查询1.语法select字段列表from表名orderby字段1排序方式1,字段2,排序方式2;2.排序方式asc:升序 desc:降序注意:如果是多字段排序,当第一个字段相同时,才会根据第二个字段排序 代码:select*fromemporderbyage;/*根据年龄对员工进行升序排序*/select......
  • 分页查询
    DQL-分页查询select字段列表from表名limit起始索引,查询记录数;注意:起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit如果查询的是第一页的数据,起始索引可以省略,直接简写为limit10 代码:select......
  • MySQL如何给已经存在的表添加自增主如何给
    之前做账本的时候是没有主键的,在phpmyadmin上无法直接删除或者编辑数据,通过查阅资料呢,给已经存在的表增加自增主键,做一个记录。我的数据库是MySQL的。其他SQL数据库都差不多。注意一下啊就可。/*首先增加自增字段*/altertabletable_nameaddcolumnidintauto_incrementprima......
  • mysql中on有时有筛选的功能
    leetcode中行程和用户SELECTrequest_atas'Day',round(avg(Status!='completed'),2)as'CancellationRate'FROMtripstJOINusersu1ON(t.client_id=u1.users_idANDu1.banned='No')JOINusersu2ON(t.driver......
  • 【MySQL】MySQL基础04 — SQL学习 — DQL — 排序查询
    SQL学习—DQL—条件查询3.排序查询/*语法: select查询字段 from表名 【where筛选条件】 orderby排序字段【asc|desc】 特点: 1.asc代表升序,desc代表降序 如果不写,默认升序 2.排序字段除了可以是表达式外,还可以是别名 但WHERE后面只能是表达式!! 3.排序......
  • Navicat操作mysql遇问题1142-create command denied to user×××的解决
    原因:root@%表示root用户通过任意其他端访问操作被拒绝!授权即可:给用户添加CREATE,DROP权限。可以查看用户授权信息:showgrants;mysql>showgrants;+---------------------------------------------------------------------------------------------------------------......
  • MySQL索引
    一、索引的概念定义:索引是对数据库表中一列或多列的值进行排序的一种结构,索引可以提高检索效率。数据库像书籍,索引就如目录。优点:索引可以减少服务器需要扫描的数据量,从而加快检索速度;索引可以帮助服务器避免排序(orderby)和创建临时表(join)缺点:创建和维护索引需要耗费时间;索......
  • 力扣615(MySQL)-平均工资:部门与公司比较(困难)
    题目:给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果(高/低/相同)。表:salary employee_id字段是表employee中employee_id字段的外键。 对于如上样例数据,结果为:解释在三月,公司的平均工资是(9000+6000+10000)/......
  • 【MySQL】MySQL番外01 — MySQL单表多字段模糊查询解决方法
    MySQL单表多字段模糊查询解决方法背景:在项目中经常遇到查询接口需要实现单表中对多字段进行多个关键字的模糊查询,但这个关键字并不一定只存在于某个字段。例如现有一张employees表,其中有last_name,first_name两个字段,分别记录一条用户的姓和名。根据用户输入的查询请求,在这两个......