hive中:客户号对应多个单号,每个单号对应a,b2个额度,得出表客户号,greatest(a,b)和对应的时间
时间: 2024-09-30 21:03:34 浏览: 31
在Hive中,如果你想根据客户号统计出每个客户最大的额度(a或b)以及对应的时间,可以使用窗口函数`ROW_NUMBER()`和`GREATEST()`来实现。假设你有一个名为`orders`的表,包含字段`customer_id`(客户号),`order_id`(单号),`amount_a`(a额度),`amount_b`(b额度),`order_time`(时间)。你可以使用以下查询:
```sql
SELECT customer_id,
GREATEST(MAX(amount_a), MAX(amount_b)) AS max_amount,
order_time
FROM (
SELECT customer_id,
amount_a,
amount_b,
order_time,
ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY amount_a DESC, amount_b DESC) as row_num
FROM orders
)
WHERE row_num = 1
GROUP BY customer_id, order_time;
```
这个查询首先按客户号分区,并按照额度降序排列(如果两个额度相等,会先选择a额度)。然后内部查询找出每个客户的第一个记录(即最大额度的那一条),外部再按客户号和时间聚合结果。
阅读全文