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
时间: 2024-02-05 21:04:00 浏览: 31
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` 子查询来过滤掉最大和最小年龄的记录,并计算剩余记录的平均年龄。
相关问题
CREATE TABLE car_store ( store_id INT PRIMARY KEY , store_name VARCHAR(50) NOT NULL, address VARCHAR(100) NOT NULL, phone_number VARCHAR(20) NOT NULL, legal_person VARCHAR(50) NOT NULL );为我提供一些数据
以下是一些可以用于填充car_store表的示例数据:
INSERT INTO car_store (store_id, store_name, address, phone_number, legal_person)
VALUES (1, 'ABC Auto', '123 Main St, Anytown, USA', '555-1234', 'John Smith');
INSERT INTO car_store (store_id, store_name, address, phone_number, legal_person)
VALUES (2, 'XYZ Motors', '456 Oak Ave, Othertown, USA', '555-5678', 'Jane Doe');
INSERT INTO car_store (store_id, store_name, address, phone_number, legal_person)
VALUES (3, 'Joe''s Garage', '789 Elm St, Another Town, USA', '555-9999', 'Joe Johnson');
[SQL]CREATE TABLE IF NOT EXISTS table_name2 ( id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, user_name VARCHAR NOT NULL, book_name VARCHAR NOT NULL, book_list VARCHAR NOT NULL, book_author VARCHAR NOT NULL, book_desc VARCHAR NOT NULL, book_content VARCHAR NOT NULL ); [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL, book_name VARCHAR NOT NULL, book_list VARCHAR NOT NULL, ' at line 3
抱歉,我之前的回答有误。在 MySQL 中,`VARCHAR` 类型必须指定长度。请修改为以下代码:
```sql
CREATE TABLE IF NOT EXISTS table_name2 (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
user_name VARCHAR(255) NOT NULL,
book_name VARCHAR(255) NOT NULL,
book_list VARCHAR(255) NOT NULL,
book_author VARCHAR(255) NOT NULL,
book_desc VARCHAR(255) NOT NULL,
book_content VARCHAR(255) NOT NULL
);
```
这个语句将创建一个名为 `table_name2` 的表,如果它不存在的话。该表包含了以下列:
- `id`:整数类型,主键,自动递增,不能为空。
- `user_name`:字符串类型,长度为 255,不能为空。
- `book_name`:字符串类型,长度为 255,不能为空。
- `book_list`:字符串类型,长度为 255,不能为空。
- `book_author`:字符串类型,长度为 255,不能为空。
- `book_desc`:字符串类型,长度为 255,不能为空。
- `book_content`:字符串类型,长度为 255,不能为空。