我在这里是新来的,因为我刚刚跳入深入了解(小孩池)学习SQL select查询。我有这样的SQL开发人员提出查询:在查询中限制结果MAX()仍然返回多行
select
prod_prices.store_ID,
prod_prices.prod_ID,
prod_prices.supp_ID,
MAX(prod_prices.promo_price) AS max_promo_price,
prod_prices.sell_price,
MAX(prod_prices.start_date) AS max_start_date
FROM
prod_prices
WHERE
prod_prices.store_ID = 3
AND
prod_prices.supp_ID = 1178
GROUP BY
prod_prices.store_ID,
prod_prices.prod_ID,
prod_prices.supp_ID,
prod_prices.sell_price
HAVING
MAX(prod_prices.start_date) > '16.04.17'
AND
MAX(prod_prices.start_date) < '17.05.17'
返回:
"store_ID" "prod_ID" "supp_ID" "MAX_promo_price" "sell_price" "start_date"
3 121752 1178 2 0,88 16.05.17
3 121752 1178 2 0,76 16.05.17
3 121754 1178 1 0,45 16.05.17
3 121756 1178 1 0,45 16.05.17
3 121758 1178 2 0,96 16.05.17
3 121758 1178 2 0,76 15.05.17
3 121760 1178 1 0,54 16.05.17
3 121762 1178 1 0,41 16.05.17
3 121764 1178 1 0,37 16.05.17
3 121766 1178 1 0,34 16.05.17
3 121773 1178 2 0,83 16.05.17
3 121773 1178 2 0,65 16.05.17
3 121777 1178 1 0,98 16.05.17
3 121779 1178 2 0,88 16.05.17
3 121779 1178 2 0,89 24.04.17
由于产品代码能在每一个最新的起始日期多个条目由于promo_price(1 =普通,2 =销售价格)和卡路里的原因,我需要缩小这一点,所以任何独特的prod_ID将只有一个条目(最高的start_date,最高的promo_price)。 不幸的是,我不太了解如何通过查询来实现row_number()或分区等,我非常感谢您的帮助。如果有什么好的学习资源,我也会对它们进行Appreacite!
最高的促销价格或最高的卖价?因为最高的promo_price始终为2(1 =常规,2 =销售价格)? –