alv*_*opr 5 group-by snowflake-cloud-data-platform
我想last_value()在查询中使用 或任何类似的函数group by而不是作为窗口函数。有可能吗?
CREATE TABLE test
(Group_id INT, Fecha DATE, Sales INT)
;
INSERT INTO test (Group_id,Fecha,Sales)
VALUES ( 1, '2021-10-15', 100 ),
( 1, '2021-11-15', 90 ),
( 1, '2022-01-15', 95 ),
( 2, '2021-10-15', 50 ),
( 2, '2021-11-15', 60 ),
( 2, '2022-01-15', 70 )
;
Run Code Online (Sandbox Code Playgroud)
目前的解决方案:
select
distinct
group_id,
last_value(sales) over (partition by group_id order by fecha) as last_sales,
max(sales) over (partition by group_id) as max_sales
from test
Run Code Online (Sandbox Code Playgroud)
所需的解决方案:
select
group_id,
max(sales) as max_sales,
last_value(sales) over (order by fecha) as last_sales
from test
group by group_id
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在所需的解决方案中使用 last_value() 函数吗?
输出应该是:
使用以下方法可以达到类似的效果ARRAY_AGG:
SELECT Group_id,
(ARRAY_AGG(sales) WITHIN GROUP(ORDER BY fecha DESC))[0] AS last_sales,
MAX(Sales) AS max_sales
FROM test
GROUP BY Group_id
ORDER BY Group_id;
Run Code Online (Sandbox Code Playgroud)
输出:
相关:相当于保留在雪花中
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |