MySQL综合练习

练习一: 各部门工资最高的员工(难度:中等)

在这里插入图片描述

USE shop;
--建表
CREATE TABLE Employee ( 
	Id INT ( 4 ) PRIMARY KEY, 
	`Name` VARCHAR ( 10 ), 
	Salary INT ( 8 ), 
	DepartmentId INT ( 4 ) );
--插入数据
INSERT INTO Employee
VALUES
	( 1, 'Joe', 70000, 1 ),
	( 2, 'Henry', 80000, 2 ),
	( 3, 'Sam', 60000, 2 ),
	( 4, 'Max', 90000, 1 );
--建表
CREATE TABLE Department ( 
	Id INT ( 4 ) PRIMARY KEY, 
	`Name` VARCHAR ( 10 ) );
--插入数据
INSERT INTO Department
VALUES
	( 1, 'IT' ),
	( 2, 'Sales' );
SELECT
	*
FROM
	Employee;
-- 查询
SELECT
	b.`Name` AS Department,
	a.`Name` AS Employee,
	a.Salary AS Salary 
FROM
	Employee a
	INNER JOIN Department b ON a.DepartmentId = b.Id 
WHERE
	( a.DepartmentId, a.Salary ) IN ( SELECT DepartmentId, max( salary ) AS Salary FROM Employee GROUP BY DepartmentId );

结果:
在这里插入图片描述

练习二: 换座位(难度:中等)

在这里插入图片描述

// 建表略
select (case 
	    when mod(id,2) != 0 and id != counts then id+1
        when mod(id,2) != 0 and id = counts then id
        else id-1 end) as id,student
from 
    seat,
    (select count(*)as counts from seat) as seat_counts
order by id;

练习三: 分数排名(难度:中等)

在这里插入图片描述

-- 建表	
CREATE TABLE Scores ( Id INT ( 4 ) PRIMARY KEY, Score DOUBLE(3,2) );
-- 插入数据
INSERT INTO Scores
VALUES
	( 1, 3.50 ),
	( 2, 3.65 ),
	( 3, 4.00 ),
	( 4, 3.85 ),
	( 5, 4.00 ),
	( 6, 3.65 );
-- 查询
SELECT
	Score,
	DENSE_RANK ( ) OVER ( ORDER BY Score DESC ) AS `Rank` 
FROM
	Scores;

结果:
在这里插入图片描述

练习四:连续出现的数字(难度:中等)

在这里插入图片描述

select distinct l1.Num as ConsecutiveNums
FROM
    Logs l1,
    Logs l2,
    Logs l3
    WHERE
    l1.Id = l2.Id - 1
    AND l2.Id = l3.Id - 1
    AND l1.Num = l2.Num
    AND l2.Num = l3.Num;

练习七: 分数排名 (难度:中等)

在这里插入图片描述

SELECT
	Score,
	RANK ( ) OVER ( ORDER BY Score DESC ) AS `Rank` 
FROM
	Scores;

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值