之前的价格定义

问题描述 投票:0回答:1

请告知我们是否需要在下面的代码中将 prev_price 设为 Null。

我需要确定 SQL 查询,该查询列出了每次更新后价格都会上涨的所有文章:

  1. 根据表格,查询应返回产品“香蕉”,“奶酪”仅输入一次。因此,没有足够的数据来进行比较。

对于第二种情况,查询时应返回产品T恤和书籍。

假设:

  • key(产品,日期)是唯一的,即每个产品每天最多可以更改一次价格。

  • 价格列仅包含正值。

案例1

product    date         price
-----------------------------
banana     2020-01-21   1
banana     2020-01-22   2
cheese     2020-01-23   1
potatoes   2020-01-21   3
potatoes   2020-01-30   3

案例2

product      date         price
-------------------------------
board game   2021-03-31   10
board game   2021-04-05   15
board game   2021-04-10   12
book         2021-03-31   10
book         2021-04-05   15
T-shirt      2021-03-31   10
T-shirt      2021-04-05   15

我的代码:

WITH PriceChanges AS 
(
    SELECT
        product,
        date,
        price,
        LAG(price) OVER (PARTITION BY product ORDER BY date) AS previous_price
    FROM 
        your_table_name
)
SELECT DISTINCT product
FROM PriceChanges
WHERE previous_price IS NULL OR price > previous_price;
sql price
1个回答
0
投票

您可以对产品进行计数并过滤所有 previous_price IS NULL,其中表中只有 1 个产品

WITH PriceChanges AS 
(
    SELECT
        product,
        date,
        price,
        LAG(price) OVER (PARTITION BY product ORDER BY date) AS previous_price,
        (SELECT COUNT(*) FROM your_table_name  WHERE product = ytn.product ) cnt
    FROM 
        your_table_name ytn
)
SELECT DISTINCT product
FROM PriceChanges
WHERE (previous_price IS NULL AND cnt = 1) OR price > previous_price;
© www.soinside.com 2019 - 2024. All rights reserved.