我想在同一个查询中使用window函数和group by子句
SELECT customer,flag ,
FIRST_VALUE(price) OVER (PARTITION BY customer ,flag
order by (case when price > 0 then DATEDIFF(date(create_date), date('2000-01-01')) end) DESC)
AS `Last Price`
FROM
(SELECT customer,create_date,flag,price FROM customer) AS virtual_table
WHERE create_date >= '2015-01-01'
AND create_date < '2023-02-17'
GROUP BY customer,flag
查询在没有group by子句的情况下工作得很好(我已经知道如何做到这一点)。为什么我们不能在这里使用group?请说明是什么原因导致查询不正确?
1条答案
按热度按时间qv7cva1a1#
为什么我们不能在这里使用group?
您尝试在窗口函数中使用未分组的
price
和create_date
,这是不正确的。在GROUP BY之后应用Window函数。因此,查询中的列可见性等于
现在您可以看到查询不正确。