mysql> selectname, count(name) as times from contacts groupbyname, phone having times>1; +-------+-------+ | name | times | +-------+-------+ | Harry | 4 | | James | 4 | | Johnny | 4 | | Ron | 4 | +-------+-------+ 4 rows in set (0.00 sec)
mysql> SELECTmax(salary) FROM Employee WHERE salary NOTIN (SELECTmax(salary) FROM Employee); +-------------+ | max(salary) | +-------------+ | 6000 | +-------------+ 1 row IN SET (0.00 sec)
下面是另一个使用子查询和 < 运算符而不是 IN 子句来查找第二高薪水的 SQL 查询:
mysql> SELECTmax(salary) FROM Employee WHERE salary < (SELECTmax(salary) FROM Employee); +-------------+ | max(salary) | +-------------+ | 6000 | +-------------+ 1 row IN SET (0.00 sec)
使用MYSQL数据库的LIMIT关键字的第二个最高工资,
MySQL 数据库的 LIMIT 关键字与 SQL Server 数据库的 TOP 关键字有点相似,并且只允许从结果集中获取某些行。查看下面的 SQL 示例,我们会发现它与 SQL Server TOP 关键字示例非常相似。
mysql> SELECT salary FROM (SELECT salary FROM Employee ORDERBY salary DESCLIMIT2) AS emp ORDERBY salary LIMIT1; +--------+ | salary | +--------+ | 6000 | +--------+ 1 row IN SET (0.00 sec)
-- 工资比经理高的员工(姓名) SELECT a.emp_name FROM Employee a JOIN Employee b ON a.mngr_id = b.emp_id WHERE a.salary > b.salary;
2. 编写一个 SQL 查询来查找其部门中薪水最高的员工。
-- 部门中薪资最高的员工 SELECT a.emp_name, a.dept_id FROM Employee a JOIN (SELECT a.dept_id, MAX(salary) as max_salary FROM Employee a JOIN Department b ON a.dept_id = b.dept_id GROUPBY a.dept_id) b ON a.salary = b.max_salary AND a.dept_id = b.dept_id;
3. 编写一个 SQL 查询来列出少于 3 人的部门?
-- 少于 3 人的部门 SELECT dept_id, COUNT(emp_name) as'Number of Employee' FROM Employee GROUPBY dept_id HAVINGCOUNT(emp_name) < 3;
4. 编写一个 SQL 查询来显示所有部门及其人数。
-- 所有部门及其人数 SELECT b.dept_name, COUNT(a.dept_id) as'Number of Employee' FROM Employee a FULLOUTERJOIN Department b ON a.dept_id=b.dept_id GROUPBY b.dept_name;
5. 你可以编写一个 SQL 查询来显示同一部门中没有经理的所有员工吗?
-- 同一部门没有经理的员工 SELECT a.emp_name FROM Employee a JOIN Employee b ON a.mngr_id = b.emp_id WHERE a.dept_id != b.dept_id;
6. 你能编写一个 SQL 查询来列出所有部门以及那里的总工资吗?
-- 所有部门以及总工资 SELECT b.dept_name, SUM(a.salary) as'Total Salary' FROM Employee a FULLOUTERJOIN Department b ON a.dept_id = b.dept_id GROUPBY b.dept_name;