MySQL数据库试题与解答
版权申诉
193 浏览量
更新于2024-07-02
收藏 221KB DOCX 举报
"mysql试题.docx包含了关于MySQL数据库的一些练习题目和解答,主要涉及SQL查询语句的使用,包括按照特定条件排序数据、计算平均值以及对比员工工资与部门平均工资等操作。"
在给定的文件中,我们看到了两个关于MySQL数据库的问题,这些问题涉及到SQL查询语言的基础和高级应用。
问题1:列出每个员工的信息,按照部门号从高到低,工资从低到高排序。这个问题可以通过使用`SELECT * FROM employee ORDER BY deptid DESC, salary`来解决。`ORDER BY`子句用于对结果集进行排序,`DESC`关键字使排序降序,首先按部门号降序排列,部门号相同则按工资升序排列。
问题2:要求列出各个部门中工资高于部门平均工资的员工数和部门号,并按部门号排序。首先,我们需要创建一个名为`employee921`的表,然后插入一些测试数据。接着,有两个方法可以实现这个需求:
方法1(效率较高):先计算每个部门的平均工资,然后在主查询中通过子查询找到工资高于该平均工资的员工。正确的SQL语句是:
```sql
SELECT COUNT(*), deptid
FROM (
SELECT id, name, salary, deptid
FROM employee921
WHERE salary > (SELECT AVG(salary) FROM employee921 WHERE deptid = tid)
) AS subquery
GROUP BY deptid
ORDER BY deptid;
```
这里使用了嵌套查询,先获取每个部门的平均工资,然后在外部查询中筛选出工资高于平均工资的员工并计算数量。
方法2(效率较低):在`GROUP BY`之后使用`HAVING`子句。这种方法效率较低,因为`HAVING`通常用于聚合函数后过滤,而在这里它被用来过滤分组后的结果,如下所示:
```sql
SELECT employee921.id, employee921.name, employee921.salary, employee921.deptid
FROM employee921
WHERE salary > (SELECT AVG(salary) FROM employee921 GROUP BY deptid HAVING deptid = tid)
ORDER BY deptid;
```
虽然这两个方法都能得到正确结果,但在实际应用中,我们通常会选择效率更高的方法1。
这些题目旨在帮助用户熟悉SQL查询语言中的基本操作,如选择、排序、分组和聚合函数,以及理解子查询和`HAVING`子句的使用场景。对于从事数据库管理和开发的人员来说,掌握这些概念和技巧是非常重要的。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-12-11 上传
2023-07-30 上传
2022-06-27 上传
2023-08-20 上传
2021-12-16 上传
2021-12-24 上传
春哥111
- 粉丝: 1w+
- 资源: 5万+
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查