zoukankan      html  css  js  c++  java
  • MySQL基础练习(三)

    经过之前两次的学习,这次用MySQL进行略微复杂的操作练习

    各部门工资最高的员工

    首先创建表employee和表department。如下

     

    我们需要查询每个部门工资最高的员工

    select a.Name as Department,b.Name as Employee,b.Salary from department a join (select DepartmentId,Name,Salary from employee where Salary in( select max(salary) as salary from employee group by DepartmentId)) b on a.Id = b.DepartmentId;

     

    换座位

    同样的先创建表seat

    SELECT(CASE WHEN id %2 = 1 AND id!=max_id THEN id+1 WHEN id %2 = 0 THEN id-1  WHEN id = max_id THEN id  END) AS id,student from (select id,student,(select MAX(id) from seat) as max_id from seat) a order by id;

    分数排名

    先创建表scores

    我们要查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。

    SELECT Score,
    CASE 
    WHEN @prevRank = Score THEN @curRank 
    WHEN @prevRank := Score THEN @curRank := @curRank + 1
    END AS Rank
    FROM scores,
    (SELECT @curRank :=0, @prevRank := NULL) 
    ORDER BY Score desc;

    行程和用户

     写一段 SQL 语句查出 2013年10月1日 至 2013年10月3日 期间非禁止用户的取消率。基于上表,你的 SQL 语句应返回如下结果,取消率(Cancellation Rate)保留两位小数。

    各部门前3高工资的员工

     对于上次的employee表我们需要新插入两行数据

     找出每个部门工资前三高的员工

    SELECT 
        d.name AS Department, e.Name AS Employee, Salary
    FROM
        Employee e
            JOIN
        Department d ON e.DepartmentId = d.Id
    WHERE
        (SELECT 
                COUNT(DISTINCT em.Salary)
            FROM
                Employee em
            WHERE
                em.Salary >= e.Salary
                    AND em.DepartmentId = e.DepartmentId) <= 3
    GROUP BY Department , Salary DESC;

    分数排名

    上次的表scores

    SELECT 
        s.Score,
        (SELECT 
                COUNT(*) + 1
            FROM
                Scores AS s1
            WHERE
                s1.Score > s.Score) AS Rank
    FROM
        scores s
    ORDER BY Score DESC;
  • 相关阅读:
    利用win10自带的虚拟机Hyper-V安装Centos7的步骤教程
    Java元组Tuple介绍与使用
    Fiddler高级用法-设置断点
    Fiddler高级用法-抓取手机app数据包
    Fiddler基础用法-抓取浏览器数据包
    dig 命令
    curl 命令
    vmware虚拟机三种网络连接方式
    解决虚拟机vmware虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
    linux 文件系统 xfs、ext4、ext3 的区别
  • 原文地址:https://www.cnblogs.com/mambakb/p/10662981.html
Copyright © 2011-2022 走看看