假设有一个书店,书店的管理者要对书店的经营状况进行管理,需要建立一个数据库,其中包括两个表: 存书(书号,书名,出版社,版次,出版日期,作者,书价,进价,数量) 销售(日期,书号,数量,金额) 请用SQL实现书店管理者的下列要求。 (1)建立存书表和销售表; (2)掌握书的库存情况,列出当前库存的所有书名、数量、余额(余额=进价×数量,即库存占用的资金); (3)统计总销售额; (4)列出每天的销售报表,包括书名、数量和合计金额(每一种书的销售总额); (5)分析畅销书,即列出本期(从当前日期起,向前30天)销售数量大于100的书名、数量。
时间: 2023-08-19 11:05:06 浏览: 619
好的,我明白了。以下是对应的 SQL 语句实现:
1. 建立存书表和销售表:
```sql
-- 存书表
CREATE TABLE book (
book_id INT PRIMARY KEY, -- 书号
book_name VARCHAR(50), -- 书名
press VARCHAR(50), -- 出版社
edition INT, -- 版次
publish_date DATE, -- 出版日期
author VARCHAR(50), -- 作者
price DECIMAL(10, 2), -- 书价
cost_price DECIMAL(10, 2), -- 进价
quantity INT -- 数量
);
-- 销售表
CREATE TABLE sales (
sale_date DATE, -- 日期
book_id INT, -- 书号
quantity INT, -- 数量
amount DECIMAL(10, 2) -- 金额
);
```
2. 列出当前库存的所有书名、数量、余额:
```sql
SELECT book_name, SUM(quantity) AS total_quantity, SUM(cost_price * quantity) AS total_cost
FROM book
GROUP BY book_name;
```
3. 统计总销售额:
```sql
SELECT SUM(amount) AS total_sales
FROM sales;
```
4. 列出每天的销售报表,包括书名、数量和合计金额:
```sql
SELECT sale_date, book_name, SUM(quantity) AS total_quantity, SUM(amount) AS total_amount
FROM sales
JOIN book ON sales.book_id = book.book_id
GROUP BY sale_date, book_name;
```
5. 分析畅销书,即列出本期(从当前日期起,向前30天)销售数量大于100的书名、数量:
```sql
SELECT book_name, SUM(quantity) AS total_quantity
FROM sales
JOIN book ON sales.book_id = book.book_id
WHERE sale_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND quantity > 100
GROUP BY book_name;
```
阅读全文