CREATE TABLE Employee(
id INT NOT NULL PRIMARY KEY,
name CHAR(10),
salary INT,
department_id INT);
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 NOT NULL PRIMARY KEY,
name CHAR(10)
);
INSERT INTO Department
VALUES
(1, 'IT'),
(2, 'Sales');
SELECT D.name AS department,E.name,E.salary
FROM Employee AS E
JOIN Department AS D
ON E.department_id = D.id
WHERE salary IN(
SELECT MAX(salary)
FROM Employee
GROUP BY department_id);
CREATE TABLE seat(
id INT NOT NULL PRIMARY KEY,
student CHAR(10)
);
INSERT INTO seat
VALUES
(1, 'Abbot'),
(2, 'Doris'),
(3, 'Emerson'),
(4, 'Green'),
(5, 'Jeams');
SELECT
(CASE
WHEN id%2=1 AND id!=(SELECT MAX(id) FROM seat) THEN id+1
WHEN id%2=0 THEN id-1
ELSE id
END)id,student
FROM seat
ORDER BY id;
CREATE TABLE Scores(
id INT NOT NULL PRIMARY KEY,
score FLOAT);
INSERT INTO Scores
VALUES
(1, 3.50),
(2, 3.65),
(3, 4.00),
(4, 3.85),
(5, 4.00),
(6, 3.65);
SELECT s.score,
(SELECT count(DISTINCT score)
FROM Scores
WHERE score>=s.score) AS `Rank`
FROM Scores AS s
ORDER BY score DESC;
如果遇到“ERROR 1064 (42000): You have an error in your SQL syntax; ”,可查看错误原因及解决办法。
CREATE TABLE Trips(
Id INT NOT NULL PRIMARY KEY,
Client_Id INT,
Driver_Id INT,
City_Id INT,
Status ENUM('completed', 'cancelled_by_driver', 'cancelled_by_client'),
Request_at DATE);
CREATE TABLE Users(
Users_Id INT NOT NULL PRIMARY KEY,
Banned VARCHAR(10),
Role ENUM('client', 'driver', 'partnet'));
INSERT INTO Trips
VALUES (1,1,10,1,'completed','2013-10-01'),
(2,2,11,1, 'cancelled_by_driver','2013-10-01'),
(3,3,12,6,'completed','2013-10-01'),
(4,4,13,6,'cancelled_by_client','2013-10-01'),
(5,1,10,1,'completed','2013-10-02'),
(6,2,11,6,'completed','2013-10-02'),
(7,3,12,6,'completed','2013-10-02'),
(8,2,12,12,'completed','2013-10-03'),
(9,3,10,12,'completed','2013-10-03'),
(10,4,13,12, 'cancelled_by_driver','2013-10-03');
INSERT INTO Users
VALUES (1, 'No', 'client'),
(2, 'Yes', 'client'),
(3, 'No', 'client'),
(4, 'No', 'client'),
(10, 'No', 'driver'),
(11, 'No', 'driver'),
(12, 'No', 'driver'),
(13, 'No', 'driver');
暂未做
INSERT IGNORE INTO Employee
VALUES (1, 'Joe', 70000, 1),
(2, 'Henry', 80000, 2),
(3, 'Sam', 60000, 2),
(4, 'Max', 90000, 1),
(5, 'Janet', 69000, 1),
(6, 'Randy', 85000, 1);
SELECT d.Name Department, e1.Name Employee, e1.Salary Salary
FROM Employee AS e1
JOIN Department AS d
ON e1.department_id = d.Id
WHERE 3 > (
SELECT COUNT(DISTINCT e2.Salary)
FROM Employee e2
WHERE e2.Salary > e1.Salary AND e1.department_id = e2.department_id
)
ORDER BY d.Name, e1.Salary DESC;
Score | Rank |
---|---|
4.00 | 1 |
4.00 | 1 |
3.85 | 3 |
3.65 | 4 |
3.65 | 4 |
3.50 | 6 |
SELECT s1.Score,
(SELECT COUNT(s2.Score)+1
FROM Scores AS s2
WHERE s2.Score > s1.Score) AS `Rank`
FROM Scores AS s1
ORDER BY s1.Score DESC;