美文网首页
MySQL Demo 02

MySQL Demo 02

作者: GeekGray | 来源:发表于2018-10-04 16:37 被阅读26次

    阅读原文

    MySQL Demo 02

    1. 排序查询

    1.查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序

    SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪
    FROM employees
    ORDER BY 年薪 DESC,last_name ASC;
    

    2.选择工资不在8000到17000的员工的姓名和工资,按工资降序

    SELECT last_name,salary
    FROM employees
    
    WHERE salary NOT BETWEEN 8000 AND 17000
    ORDER BY salary DESC;
    

    3.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

    SELECT *,LENGTH(email)
    FROM employees
    WHERE email LIKE '%e%'
    ORDER BY LENGTH(email) DESC,department_id ASC;
    

    2. 分组查询

    1.查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序

    SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary),job_id
    FROM employees
    GROUP BY job_id
    ORDER BY job_id;
    

    2.查询员工最高工资和最低工资的差距(DIFFERENCE)

    SELECT MAX(salary)-MIN(salary) DIFFRENCE
    FROM employees;
    

    3.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内

    SELECT MIN(salary),manager_id
    FROM employees
    WHERE manager_id IS NOT NULL
    GROUP BY manager_id
    HAVING MIN(salary)>=6000;
    

    4.查询所有部门的编号,员工数量和工资平均值,并按平均工资降序

    SELECT department_id,COUNT(*),AVG(salary) a
    FROM employees
    GROUP BY department_id
    ORDER BY a DESC;
    

    5.选择具有各个job_id的员工人数

    SELECT COUNT(*) 个数,job_id
    FROM employees
    GROUP BY job_id;
    

    3. 单行函数

    1. 显示系统时间(注:日期+时间)

    SELECT NOW();
    

    2. 查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

    SELECT employee_id,last_name,salary,salary*1.2 "new salary"
    FROM employees;
    

    3. 将员工的姓名按首字母排序,并写出姓名的长度(length)

    SELECT LENGTH(last_name) 长度,SUBSTR(last_name,1,1) 首字符,last_name
    FROM employees
    ORDER BY 首字符;
    

    4. 做一个查询,产生下面的结果

    <last_name> earns <salary> monthly but wants <salary*3>
    Dream Salary
    King earns 24000 monthly but wants 72000
    
    
    SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) AS "Dream Salary"
    FROM employees
    WHERE salary=24000;
    

    5. 使用case-when,按照下面的条件:

    job grade

    AD_PRES A

    ST_MAN B

    IT_PROG C

    SA_REP D

    ST_CLERK E

    产生下面的结果

    Last_name Job_id Grade

    king AD_PRES A

    SELECT last_name,job_id AS  job,
    CASE job_id
    WHEN 'AD_PRES' THEN 'A' 
    WHEN 'ST_MAN' THEN 'B' 
    WHEN 'IT_PROG' THEN 'C' 
    WHEN 'SA_PRE' THEN 'D'
    WHEN 'ST_CLERK' THEN 'E'
    END AS Grade
    FROM employees
    WHERE job_id = 'AD_PRES';
    

    4.分组函数

    1.查询公司员工工资的最大值,最小值,平均值,总和

    SELECT MAX(salary) 最大值,MIN(salary) 最小值,AVG(salary) 平均值,SUM(salary) 和
    FROM employees;
    

    2.查询员工表中的最大入职时间和最小入职时间的相差天数 (DIFFRENCE)

    SELECT MAX(hiredate) 最大,MIN(hiredate) 最小,(MAX(hiredate)-MIN(hiredate))/1000/3600/24 DIFFRENCE
    FROM employees;
    
    SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) DIFFRENCE
    FROM employees;
    
    SELECT DATEDIFF('1995-2-7','1995-2-6');
    

    3.查询部门编号为90的员工个数

    SELECT COUNT(*) FROM employees WHERE department_id = 90;

    相关文章

      网友评论

          本文标题:MySQL Demo 02

          本文链接:https://www.haomeiwen.com/subject/nzexaftx.html