sql 笔试题

本文介绍了一种查询挂科两门及以上课程的学生及其平均分数的方法。通过构造SQL语句,实现了对学生各科成绩的数据筛选与计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.查询挂科两门及以上的同学的平均分

namecoursescore
张三数学55
张三语文55
张三英语45
李四数学55
李四语文35
李四英语75
王五数学55
王五语文85
王五英语75

select sum( course<60 ) as num , avg(score) from table group by name having num >=2

继续增加。。。

### SQL 笔试题目及答案解析 以下是基于提供的参考资料整理的经典 SQL 笔试题及其答案解析: #### 题目 21 **问题**: 查询部门编号为 1 的员工姓名和工资。 ```sql SELECT name, salary FROM employees WHERE department_id = 1; ``` 此查询通过 `WHERE` 子句筛选出部门编号为 1 的记录,并返回对应的员工姓名 (`name`) 和工资 (`salary`) 列[^1]。 --- #### 题目 22 **问题**: 统计每个部门的平均工资并按降序排列。 ```sql SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id ORDER BY avg_salary DESC; ``` 该语句利用聚合函数 `AVG()` 计算各部门的平均工资,同时使用 `GROUP BY` 对数据分组,并通过 `ORDER BY` 实现降序排序。 --- #### 题目 23 **问题**: 查找工资高于所有员工平均工资的员工信息。 ```sql SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); ``` 子查询 `(SELECT AVG(salary) FROM employees)` 返回所有员工的平均工资,外层查询则筛选出工资大于该值的员工记录。 --- #### 题目 24 **问题**: 找到入职日期最早的员工姓名和入职时间。 ```sql SELECT name, hire_date FROM employees WHERE hire_date = (SELECT MIN(hire_date) FROM employees); ``` 这里使用了嵌套查询中的 `MIN()` 函数来获取最早入职的时间,并匹配相应的员工信息。 --- #### 题目 25 **问题**: 显示每个职位的总人数以及对应职位名称。 ```sql SELECT job_title, COUNT(*) AS total_employees FROM jobs j JOIN employees e ON j.job_id = e.job_id GROUP BY job_title; ``` 上述代码展示了如何通过连接 (`JOIN`) 表格实现跨表查询,最终统计每种职位的人数。 --- #### 题目 26 **问题**: 获取薪资最高的前五名员工的信息。 ```sql SELECT * FROM employees ORDER BY salary DESC LIMIT 5; ``` 这条命令按照薪水从高到底排序,并限制结果集只显示前五个条目。 --- #### 题目 27 **问题**: 删除没有分配任何项目的员工记录。 ```sql DELETE FROM employees WHERE employee_id NOT IN (SELECT DISTINCT(employee_id) FROM projects); ``` 这里的逻辑是先找出参与过项目的所有员工 ID ,再删除那些不在列表里的员工记录。 --- #### 题目 28 **问题**: 更新某位特定员工的邮箱地址。 假设要更新的是员工ID为'101'的新邮件地址 'new.email@example.com' ```sql UPDATE employees SET email='new.email@example.com' WHERE employee_id=101; ``` 这是标准的数据修改操作语法。 --- #### 题目 29 **问题**: 插入一条新雇员的数据至数据库中。 假设有如下字段需填写:employee_id(唯一), name, salary, department_id. ```sql INSERT INTO employees (employee_id, name, salary, department_id) VALUES ('102', 'John Doe', 5000, 2); ``` 这是一次典型的插入动作示范。 --- #### 题目 30 **问题**: 将两个表格的内容联合起来展示,即使某些键不存在于另一方也应呈现出来(全外联接 Full Outer Join)。 如果存在两张分别存储不同部分客户资料的表A与B,则可以这样写: ```sql SELECT A.*, B.* FROM table_A A FULL OUTER JOIN table_B B ON A.key_column = B.key_column; ``` 注意并非所有的DBMS都支持FULL OUTER JOIN,在不兼容的情况下可能需要用UNION模拟. --- ### 总结 以上仅列举了一部分内容作为示例。更多深入练习可参照其他区间内的习题集合[^2]^[]^。对于准备技术面试或者提升SQL技能的人来说,这些案例非常有价值[^3]^[]^.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值