已知Student表(Sno,Sname,Sex, Sage, Dept),统计每个系姓'李'的男生人数和女生人数以及男生的最大年龄和女生的最大年龄。结果按系名的升序排序。
时间: 2024-10-08 20:07:57 浏览: 34
为了统计每个系姓为"李"的学生中,男生和女生的人数,以及男生和女生的最大年龄,并按照系名升序排列,你可以编写如下的SQL查询:
```sql
SELECT
Dept,
COUNT(CASE WHEN Sex = '男' THEN 1 ELSE NULL END) AS MaleCount,
COUNT(CASE WHEN Sex = '女' THEN 1 ELSE NULL END) AS FemaleCount,
MAX(CASE WHEN Sex = '男' THEN Sage ELSE NULL END) AS MaxMaleAge,
MAX(CASE WHEN Sex = '女' THEN Sage ELSE NULL END) AS MaxFemaleAge
FROM
Student
WHERE
Sname LIKE '李%'
GROUP BY
Dept
ORDER BY
Dept ASC;
```
这个查询做了以下几件事:
1. 通过`WHERE`子句筛选出姓"李"的学生。
2. 使用`CASE`表达式分别计数男生(`Sex = '男'`)和女生(`Sex = '女'`)的人数。
3. 对于男生和女生,计算其最大年龄。
4. 使用`GROUP BY`按系名(Dept)分组。
5. 最后使用`ORDER BY`对结果按系名的升序排序。
相关问题
创建一个student表,字段包括SNO,SNAME,SSEX,SAGE,SDEPT
好的,这个问题是关于数据库的,可以回答。以下是创建student表的SQL语句:
CREATE TABLE student (
SNO VARCHAR(10) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
SSEX CHAR(2) CHECK (SSEX IN ('男', '女')),
SAGE INT CHECK (SAGE > 0 AND SAGE < 120),
SDEPT VARCHAR(20) NOT NULL
);
这个SQL语句将创建一个名为student的表,包含SNO、SNAME、SSEX、SAGE和SDEPT五个字段。SNO是主键,SNAME、SDEPT是非空字段,SSEX只能为男或女,SAGE需要大于0小于120。
① student1 表数据输入 Sno Sname Ssex Sage Sdept 3005 赵达 女 14 SX 3006 杨红 南 21 JSJ
可以使用 SQL 语句向 student1 表中插入数据:
```
INSERT INTO student1(Sno, Sname, Ssex, Sage, Sdept) VALUES
('3005', '赵达', '女', 14, 'SX'),
('3006', '杨红', '男', 21, 'JSJ');
```
执行完上述语句后,student1 表中就会有两条数据。