学生表tbStudentXx(学号、姓名、性别、班级、出生日期和家庭地址) 图书表tbBookXx(编号、书名、作者姓名、出版社、出版日期和价格) 图书借阅表tbBorrowXx(学生学号、图书编号、借阅日期、归还日期、借阅天数) 统计每个出版社价格高于50元的图书的册数、平均价格、最高价格和最低价格。 [如何用union解决这道题]
时间: 2023-07-10 19:35:14 浏览: 51
学生信息管理系统的顺序表实现
使用UNION操作也可以实现这个统计功能,具体SQL语句如下:
```
SELECT tbBookXx.出版社, COUNT(*) AS 册数, AVG(tbBookXx.价格) AS 平均价格, MAX(tbBookXx.价格) AS 最高价格, MIN(tbBookXx.价格) AS 最低价格
FROM tbBookXx, tbBorrowXx
WHERE tbBookXx.编号 = tbBorrowXx.图书编号
AND tbBookXx.价格 > 50
GROUP BY tbBookXx.出版社
UNION
SELECT tbBookXx.出版社, 0, 0, 0, 0
FROM tbBookXx
WHERE tbBookXx.出版社 NOT IN (
SELECT tbBookXx.出版社
FROM tbBookXx, tbBorrowXx
WHERE tbBookXx.编号 = tbBorrowXx.图书编号
AND tbBookXx.价格 > 50
GROUP BY tbBookXx.出版社
)
```
这个SQL语句使用了UNION操作,将两个查询结果合并在一起。第一个查询语句统计了每个出版社价格高于50元的图书的册数、平均价格、最高价格和最低价格;第二个查询语句统计了没有价格高于50元的图书的出版社,返回0值。最终的结果是这两个查询语句的合并。需要注意的是,UNION操作要求两个查询结果的列数和数据类型必须相同。
阅读全文