sql语句实现查询实例
来源:互联网 发布:数据库简答题 编辑:程序博客网 时间:2024/05/20 01:34
说明:本内容衔接上次的内容
七、内连接(两张表均有时,才可以实现),我觉得内连接实现的功能和用where连接两表时,实现的功能是一样的
获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary(当前时间为9999-01-01)
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
实现语句:
select a.dept_no,b.emp_no,max(b.salary) as salary
from dept_emp a,salaries b
where a.emp_no=b.emp_no and a.to_date='9999-01-01' and b.to_date='9999-01-01'
group by a.dept_no;
或者是:
SELECT d.dept_no,s.emp_no,max(s.salary) AS salary
FROM salaries AS s INNER JOIN dept_emp As d ON d.emp_no = s.emp_no
WHERE d.to_date =
'9999-01-01'
AND s.to_date =
'9999-01-01'
GROUP BY d.dept_no;
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
CREATE TABLE IF NOT EXISTS "titles" (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
这个创建表的方式刚开始没看懂,后来才知道是创建表的。(含义为:如果titles表不存在的话,就创建,否则,就不创建)
实现语句:
select a.title,count(*) as t
from titles a
group by a.title
having count(a.title)>=2;
九、查询不重复数据的分组
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
注意对于重复的emp_no进行忽略。
CREATE TABLE IF NOT EXISTS "titles" (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
实现语句:
select a.title,count(distinct emp_no)
from titles a
group by a.title
having count(distinct emp_no)>=2;
十、奇数查询
查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
实现语句:
select a.*
from employees a
where (a.emp_no%2=1) and a.last_name<>'Mary'
order by a.hire_date desc;
十一、不用order by 语句实现排名第二的查询语句
查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
实现思路:
实现语句:
SELECT e.emp_no, MAX(s.salary) AS salary, e.last_name, e.first_name
FROM employees e,salaries s
WHERE s.to_date = '9999-01-01' and e.emp_no = s.emp_no
AND s.salary NOT IN (SELECT MAX(salary) FROM salaries WHERE to_date = '9999-01-01');
十二、连接实例
查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`));
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
实现语句:(左连接实现多个表的查询)
select e.last_name,e.first_name,dep.dept_name
from employees e left join dept_emp de on e.emp_no=de.emp_no left join departments dep on de.dept_no=dep.dept_no;
- sql语句实现查询实例
- sql语句实现查询实例
- sql语句实现查询实例
- sql语句实现查询
- sql语句实现查询
- SQL语句实现模糊查询
- SQL语句实现模糊查询
- SQL语句实现模糊查询
- sql语句多表查询实例
- sql语句多表查询实例
- sql语句多表查询实例
- SQL 语句 知识积累----------子查询实例
- 实现多条件模糊查询SQL语句
- mysql 递归查询sql语句的实现
- sql 语句 用with 实现递归查询
- SQL语句实现定制化查询
- SQL 多表连接查询实现语句
- 一条sql语句实现统计查询
- redis与一些数据库及软件之间的区别
- java中的接口与工厂
- Bootstrap Table 中文文档(完整翻译版)
- linux下进程和线程状态查看
- java.lang.NoSuchMethodError: org.springframework.cache.ehcache.EhCacheFactoryBean.setMaxEntriesLocal
- sql语句实现查询实例
- 二叉搜索树转有序双向链表
- 迁移学习 Transfer learning
- Weblogic学习(二) Linux下安装Weblogic11g
- Android根据图片Uri获取图片绝对路径
- lnmp1.3环境下thinkphp3.2配置pathinfo模式
- Nginx+Tomcat 集群配置
- 错误 libpam enabled but missing——编译openVPN时出错
- java代码注释规范