mysql复杂查询练习
时间: 2023-10-05 13:04:40 浏览: 46
好的,以下是一些MySQL复杂查询的练习:
1. 找出销售金额最高的5个订单(假设有一个orders表和一个order_items表,orders表包含订单信息,order_items表包含订单中的商品信息,并且两个表之间有外键关联)。
```sql
SELECT o.order_id, SUM(oi.item_price * oi.quantity) AS total_sales
FROM orders o
JOIN order_items oi ON o.order_id = oi.order_id
GROUP BY o.order_id
ORDER BY total_sales DESC
LIMIT 5;
```
2. 找出每个城市的平均房价以及房价排名(假设有一个houses表,包含房屋信息,其中有一个city列表示房屋所在城市)。
```sql
SELECT city, AVG(price) AS avg_price,
RANK() OVER (ORDER BY AVG(price) DESC) AS price_rank
FROM houses
GROUP BY city;
```
3. 找出每个分类中销售数量最高的商品以及销售数量(假设有一个products表,包含商品信息,一个categories表,包含商品分类信息,一个order_items表,包含订单中的商品信息,并且这些表之间有外键关联)。
```sql
SELECT c.category_name, p.product_name, SUM(oi.quantity) AS total_sales
FROM categories c
JOIN products p ON c.category_id = p.category_id
JOIN order_items oi ON p.product_id = oi.product_id
GROUP BY c.category_id, p.product_id
HAVING total_sales = (
SELECT MAX(total_sales)
FROM (
SELECT SUM(oi.quantity) AS total_sales
FROM categories c
JOIN products p ON c.category_id = p.category_id
JOIN order_items oi ON p.product_id = oi.product_id
WHERE c.category_id = cat.category_id
GROUP BY p.product_id
) AS sales
)
```
希望这些练习能帮助你提高MySQL查询的能力。