请写出以下 SQL 语句 (I)各省人员表 user_info (id, name, age, phone, province, id_ card),写出各省年龄在 30 以上的人员数并升序排序的 sal 语句; select province, count (id) num from user info where age > 30 group by province order by num asc; (2)成绩表 student_ score (id, name, score) 姓名 学科 成绩 LiLei 英语 78 LiLei 数学 103 ZhangKe 物理 97 ZhangKe 数学 99 姓名 Litei ZhangKe 英语 78 0 数学 103 99 物理 0 97 如何实现左图到右图的转换?
时间: 2024-02-01 13:04:22 浏览: 52
这是一个数据透视表的转换,可以使用 SQL 中的 PIVOT 或者自连接实现。以下是使用自连接的 SQL 语句示例:
```
SELECT
s1.name,
s1.英语 AS 英语,
s1.数学 AS 数学,
s1.物理 AS 物理
FROM
(SELECT name, score, 学科 FROM student_score) AS s
PIVOT (MAX(score) FOR 学科 IN ([英语], [数学], [物理])) AS p
JOIN (SELECT name, 英语, 数学, 物理 FROM (SELECT name, score, 学科 FROM student_score) AS s PIVOT (MAX(score) FOR 学科 IN ([英语], [数学], [物理])) AS p) AS s1 ON s.name = s1.name
```
注意,不同的数据库系统可能有不同的语法实现数据透视表,上述语句是针对 SQL Server 的实现。
阅读全文