查询去掉最大年龄,最小年龄后人员的平均年龄(要求使用NOT EXISTS)
时间: 2024-06-01 20:11:12 浏览: 15
假设人员信息存储在一个名为"person"的表中,其中包含"id"、"name"和"age"三个字段。
查询语句如下:
SELECT AVG(age) FROM person p1
WHERE NOT EXISTS (
SELECT 1 FROM person p2
WHERE p2.age > p1.age AND p2.age < (SELECT MAX(age) FROM person) OR p2.age < p1.age AND p2.age > (SELECT MIN(age) FROM person)
);
解释:
- 首先,我们从"person"表中选择所有记录,并使用"p1"作为别名。
- 然后,我们使用NOT EXISTS子句来排除最大年龄和最小年龄的记录。具体来说,我们使用子查询来查找比p1年龄更大但小于最大年龄,或比p1年龄更小但大于最小年龄的记录。如果这样的记录存在,则NOT EXISTS返回FALSE,p1将被排除在外。
- 最后,我们对剩余记录的年龄求平均值。
相关问题
使用not exists查询
在SQL语言中,NOT EXISTS是一种常见的查询方式,它用于检查子查询是否为空。具体来说,当子查询不返回任何行时,NOT EXISTS条件返回True。否则,它返回False。
使用NOT EXISTS查询时,需要使用以下语法:
```
SELECT column1, column2, ...
FROM table_name
WHERE NOT EXISTS (SELECT column1 FROM table_name WHERE condition);
```
其中,column1, column2, ...是要查询的列名,table_name是要查询的表名,condition是子查询的条件。如果子查询不返回任何结果,则NOT EXISTS条件为True,否则为False。
举个例子,如果我们想要查询所有没有下过订单的客户,可以使用以下语句:
```
SELECT *
FROM customers c
WHERE NOT EXISTS (SELECT * FROM orders o WHERE o.customer_id = c.customer_id);
```
这个查询会返回所有没有下过订单的客户的记录。
CREATE TABLE personnel ( ID NUMBER PRIMARY KEY, company_name VARCHAR2(50) NOT NULL, age NUMBER(3,1), name VARCHAR2(20) NOT NULL, gender VARCHAR2(2) NOT NULL, nationality VARCHAR2(10), working_years NUMBER(3,1), education VARCHAR2(20), occupational_qualification VARCHAR2(50), job_function VARCHAR2(50), age_group VARCHAR2(20), backbone_type VARCHAR2(20), job_category VARCHAR2(20), major_category VARCHAR2(20) ); 使用PLSQL分析下列需求 1)查询姓名重复三次的人员ID,结果以人员ID降序排序 2)查询去掉最大年龄,最小年龄后人员的平均年龄(要求使用 NOT EXISTS
1)查询姓名重复三次的人员ID,结果以人员ID降序排序:
```sql
SELECT ID
FROM personnel
GROUP BY ID, name
HAVING COUNT(name) = 3
ORDER BY ID DESC;
```
2)查询去掉最大年龄,最小年龄后人员的平均年龄(要求使用 NOT EXISTS):
```sql
SELECT AVG(age) AS avg_age
FROM personnel p1
WHERE NOT EXISTS (
SELECT 1
FROM personnel p2
WHERE p2.age = (SELECT MAX(age) FROM personnel)
AND p1.ID = p2.ID
)
AND NOT EXISTS (
SELECT 1
FROM personnel p3
WHERE p3.age = (SELECT MIN(age) FROM personnel)
AND p1.ID = p3.ID
);
```
这里使用了两个 `NOT EXISTS` 子查询来过滤掉最大和最小年龄的记录,并计算剩余记录的平均年龄。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)