Sql面试题分享

新建表结构

CREATE TABLE `dept` (
  `dept_id` int(11) NOT NULL DEFAULT '0',
  `dept_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `emp` (
  `emp_id` int(11) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `score` (
  `emp_id` int(11) DEFAULT NULL,
  `score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `test`.`dept` (`dept_id`, `dept_name`) VALUES ('1', 'aa');
INSERT INTO `test`.`dept` (`dept_id`, `dept_name`) VALUES ('2', 'bb');
INSERT INTO `test`.`dept` (`dept_id`, `dept_name`) VALUES ('3', 'cc');
INSERT INTO `test`.`dept` (`dept_id`, `dept_name`) VALUES ('4', 'dd');
INSERT INTO `test`.`dept` (`dept_id`, `dept_name`) VALUES ('5', 'ee');
INSERT INTO `test`.`emp` (`emp_id`, `dept_id`) VALUES ('1', '1');
INSERT INTO `test`.`emp` (`emp_id`, `dept_id`) VALUES ('2', '2');
INSERT INTO `test`.`emp` (`emp_id`, `dept_id`) VALUES ('3', '3');
INSERT INTO `test`.`emp` (`emp_id`, `dept_id`) VALUES ('4', '3');
INSERT INTO `test`.`emp` (`emp_id`, `dept_id`) VALUES ('5', '5');
INSERT INTO `test`.`score` (`emp_id`, `score`) VALUES ('1', '90');
INSERT INTO `test`.`score` (`emp_id`, `score`) VALUES ('2', '70');
INSERT INTO `test`.`score` (`emp_id`, `score`) VALUES ('3', '80');
INSERT INTO `test`.`score` (`emp_id`, `score`) VALUES ('4', '60');

Sql面试题分享_第1张图片

 

SET @i = NULL;

SELECT
	s.emp_id,
	s.score,
	t.i - s.score
FROM
	score s
JOIN (
	SELECT
		s.emp_id ,@i i ,@i := s.score score
	FROM
		score s
	ORDER BY
		s.score DESC
) t ON t.emp_id = s.emp_id
ORDER BY
	s.score DESC

 

你可能感兴趣的:(Mysql)