SQL 9 联合结果集 4. 联合结果集应用举例
2011-02-01 10:32
776 查看
联合结果集中制作报表的时候经常被用到,我们可以使用联合结果集将没有直接关系的数据显示到同一张报表中。使用UNION运算符时,只要被联合的结果集符合联合结果集的原则,那么被连接的两个SQL语句可以是非常复杂的,也可以是非常简单。本小节将展示几个使用的例子,一百年两届联合结果集中实际开发中的应用。
1.员工年龄报表
要求查询员工的最低年龄和最高年龄,临时工和正式员工要分别查询。实现SQL语句如下:
SELECT '正式员工最高年龄', MAX(FAge) FROM T_Employee
UNION
SELECT '正式员工最低年龄', MIN(FAge) FROM T_Employee
UNION
SELECT '临时工最高年龄', MAX(FAge) FROM T_TempEmployee
UNION
SELECT '临时工最低年龄', MIN(FAge) FROM T_TempEmployee
+------------------------------------+-----------+
| the maxium age of formal staffs | max(fage) |
+------------------------------------+-----------+
| the maxium age of formal staffs | 35 |
| the minium age of formal staffs | 23 |
| the maxium age of temporary staffs | 45 |
| the minium age of temporary staffs | 23 |
+------------------------------------+-----------+
2.正式员工工资报表
要求查询美味正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资额的合计。实现SQL语句如下:
+-------------------+----------+
| fnumber | fsalary |
+-------------------+----------+
| DEV001 | 8300.00 |
| DEV002 | 2300.00 |
| DEV003 | 3333.00 |
| HR001 | 4300.00 |
| HR002 | 3300.00 |
| IT001 | 5500.00 |
| IT002 | 2800.00 |
| SALES001 | 5300.00 |
| SALES002 | 8300.00 |
| summary of salary | 43433.00 |
+-------------------+----------+
3. 打印5以内自然数的平方
要求打印出5以内的自然数及它们的平方数。
实现SQL语句如下。
MySQL、MS SQL Server:
SELECT 1, 1*1
UNION
SELECT 2, 2*2
UNION
SELECT 3, 3*3
UNION
SELECT 4, 4*4
UNION
SELECT 5, 5*5
Oracle:
SELECT 1, 1*1 FROM DUAL
UNION
SELECT 2, 2*2 FROM DUAL
UNION
SELECT 3, 3*3 FROM DUAL
UNION
SELECT 4, 4*4 FROM DUAL
UNION
SELECT 5, 5*5 FROM DUAL
+---+-----+
| 1 | 1*1 |
+---+-----+
| 1 | 1 |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| 5 | 25 |
+---+-----+
4.列出员工姓名
要求列出公司所有员工(包括临时工)的姓名,将重复的姓名过滤掉。实现SQL语句如下:
SELECT FName FROM T_Employee
UNION
SELECT FName FROM T_TempEmployee
+---------+
| FNAME |
+---------+
| Tom |
| Jerry |
| Potter |
| Jane |
| Tina |
| Smith |
| NULL |
| Timmy |
| Stone |
| Sarani |
| Yalaha |
| Konkaya |
| Fotifa |
| James |
+---------+
5.分别列出正式员工和临时工的姓名
要求分别列出正式员工和临时工的姓名,并保留重复的姓名。
实现SQL语句如下:
MySQL、MS SQL Server:
SELECT '-Formal Staff Name-'
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT '-Temporary-'
UNION ALL
SELECT FName FROM T_TempEmployee
+---------------------+
| -Formal Staff Name- |
+---------------------+
| -Formal Staff Name- |
| Tom |
| Jerry |
| Potter |
| Jane |
| Tina |
| Smith |
| NULL |
| Timmy |
| Stone |
| -Temporary- |
| Sarani |
| Tom |
| Yalaha |
| Tina |
| Konkaya |
| Fotifa |
| James |
+---------------------+
Oracle
SELECT 'Formal Employee Name' FROM DUAL
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT 'Temporary Employee Name' FROM DUAL
UNION ALL
SELECT FName FROM T_TempEmployee
1.员工年龄报表
要求查询员工的最低年龄和最高年龄,临时工和正式员工要分别查询。实现SQL语句如下:
SELECT '正式员工最高年龄', MAX(FAge) FROM T_Employee
UNION
SELECT '正式员工最低年龄', MIN(FAge) FROM T_Employee
UNION
SELECT '临时工最高年龄', MAX(FAge) FROM T_TempEmployee
UNION
SELECT '临时工最低年龄', MIN(FAge) FROM T_TempEmployee
+------------------------------------+-----------+
| the maxium age of formal staffs | max(fage) |
+------------------------------------+-----------+
| the maxium age of formal staffs | 35 |
| the minium age of formal staffs | 23 |
| the maxium age of temporary staffs | 45 |
| the minium age of temporary staffs | 23 |
+------------------------------------+-----------+
2.正式员工工资报表
要求查询美味正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资额的合计。实现SQL语句如下:
+-------------------+----------+
| fnumber | fsalary |
+-------------------+----------+
| DEV001 | 8300.00 |
| DEV002 | 2300.00 |
| DEV003 | 3333.00 |
| HR001 | 4300.00 |
| HR002 | 3300.00 |
| IT001 | 5500.00 |
| IT002 | 2800.00 |
| SALES001 | 5300.00 |
| SALES002 | 8300.00 |
| summary of salary | 43433.00 |
+-------------------+----------+
3. 打印5以内自然数的平方
要求打印出5以内的自然数及它们的平方数。
实现SQL语句如下。
MySQL、MS SQL Server:
SELECT 1, 1*1
UNION
SELECT 2, 2*2
UNION
SELECT 3, 3*3
UNION
SELECT 4, 4*4
UNION
SELECT 5, 5*5
Oracle:
SELECT 1, 1*1 FROM DUAL
UNION
SELECT 2, 2*2 FROM DUAL
UNION
SELECT 3, 3*3 FROM DUAL
UNION
SELECT 4, 4*4 FROM DUAL
UNION
SELECT 5, 5*5 FROM DUAL
+---+-----+
| 1 | 1*1 |
+---+-----+
| 1 | 1 |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| 5 | 25 |
+---+-----+
4.列出员工姓名
要求列出公司所有员工(包括临时工)的姓名,将重复的姓名过滤掉。实现SQL语句如下:
SELECT FName FROM T_Employee
UNION
SELECT FName FROM T_TempEmployee
+---------+
| FNAME |
+---------+
| Tom |
| Jerry |
| Potter |
| Jane |
| Tina |
| Smith |
| NULL |
| Timmy |
| Stone |
| Sarani |
| Yalaha |
| Konkaya |
| Fotifa |
| James |
+---------+
5.分别列出正式员工和临时工的姓名
要求分别列出正式员工和临时工的姓名,并保留重复的姓名。
实现SQL语句如下:
MySQL、MS SQL Server:
SELECT '-Formal Staff Name-'
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT '-Temporary-'
UNION ALL
SELECT FName FROM T_TempEmployee
+---------------------+
| -Formal Staff Name- |
+---------------------+
| -Formal Staff Name- |
| Tom |
| Jerry |
| Potter |
| Jane |
| Tina |
| Smith |
| NULL |
| Timmy |
| Stone |
| -Temporary- |
| Sarani |
| Tom |
| Yalaha |
| Tina |
| Konkaya |
| Fotifa |
| James |
+---------------------+
Oracle
SELECT 'Formal Employee Name' FROM DUAL
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT 'Temporary Employee Name' FROM DUAL
UNION ALL
SELECT FName FROM T_TempEmployee
相关文章推荐
- MyBatis联合主键结果集与SQL查询结果不一致的问题
- SQL 9 联合结果集 2. 联合结果集的原则
- SQL 改写 max decode 联合应用
- 一个能够编写、运行SQL查询并可视化结果的Web应用:SqlPad
- 一个能够编写、运行SQL查询并可视化结果的Web应用:SqlPad
- 多对多之间的联合组件sql(仅以hibernate关系表举例,其他一样)
- sql 的MINUS指令的应用(只适用于oracle,别的数据库可以使用联合连接union join!比较少见!)
- 【c语言】小端存储的举例及联合的应用
- SQL 9 联合结果集 概述与准备
- SQL 9 联合结果集 1. 简单的结果集联合
- SQL 9 联合结果集 3. UNION ALL
- HibernateCallback()调用原生SQL后的结果集怎样取出结果
- Linq查询结果集比对应的sql语句查询结果集不一致,存在重复结果
- SQL 操作结果集 -并集、差集、交集、结果集排序
- Delphi中数据集CacheUpdates属性与SQL事务联合应用代码示例
- SQL多表查询结果返回实体结果集
- sql联合查询 一条select语句 查询多个结果,显示
- Oracle动态SQL返回单条结果和结果集
- [转]SQL 操作结果集 -并集、差集、交集、结果集排序
- SQL 操作结果集 -并集、差集、交集、结果集排序