请写一个列传行的hive sql
时间: 2023-11-27 07:52:23 浏览: 65
hive列转行案例
5星 · 资源好评率100%
假设有两张表,一张是用户表 user_info,一张是订单表 order_info,它们的结构如下:
user_info:
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| user_id | int | 用户 ID |
| user_name | string | 用户名 |
| age | int | 年龄 |
| gender | string | 性别 |
| city | string | 城市 |
order_info:
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| order_id | int | 订单 ID |
| user_id | int | 用户 ID |
| order_time | string | 下单时间 |
| total_amount | double | 订单总金额 |
| payment_method | string | 支付方式 |
| status | string | 订单状态 |
现在需要查询每个用户的订单总金额和平均订单金额,以及用户的基本信息,查询结果按照用户 ID 升序排列,可以使用如下 Hive SQL 语句:
```
SELECT
u.user_id,
u.user_name,
u.age,
u.gender,
u.city,
SUM(o.total_amount) AS total_amount,
AVG(o.total_amount) AS avg_amount
FROM
user_info u
JOIN
order_info o
ON
u.user_id = o.user_id
GROUP BY
u.user_id,
u.user_name,
u.age,
u.gender,
u.city
ORDER BY
u.user_id ASC;
```
解析:
- 使用 JOIN 连接 user_info 和 order_info 两张表,关联条件是 user_id。
- 使用 GROUP BY 按照用户的基本信息(user_id, user_name, age, gender, city)进行分组。
- 使用 SUM 和 AVG 分别计算订单总金额和平均订单金额。
- 使用 ORDER BY 按照用户 ID 升序排列。
阅读全文