我有一个表产品:
ProductName Price
straight jeans 1500
slim jeans 2500
Denim jacket 3000
Denim shorts 800
Skinny jeans 1700
loose Jeans 2100
mom Jeans 2800
wide jeans 1850
distressed jeans 1100
bootcut jeans 1350
对于购买两个不同的东西,总价值3000或以上,他们给予第三个作为礼物。我需要一个SQL查询花费最少的两件事,并采取第三个作为最昂贵的。
我唯一想到的是通过所有可能的组合,找到最便宜的组合,超过3000.
WITH Products_sum AS (
SELECT p1.ProductName AS ProductName1, p2.ProductName AS ProductName2, p1.Price + p2.Price AS TotalPrice
FROM products p1
JOIN products p2
ON p1.ProductName < p2.ProductName
)
SELECT top 1 ProductName1, ProductName2, TotalPrice
FROM Products_sum
WHERE TotalPrice >= 3000
order by TotalPrice asc
我期待的答案是:
bootcut jeans 1350
Skinny jeans 1700
Denim jacket 3000
但不知道该怎么做。
3条答案
按热度按时间jslywgbw1#
我从你离开的地方继续,并组成预期的结果。
转换为cte的顶级对产品和最昂贵的。
将最终结果集与union语句组合。
huwehgph2#
这将给你独特的组合通过一个交叉连接和一个小逻辑开关。
zujrkrfu3#
我们
p1
,p2
,p3
)元组nonexistent
记录,则p1
和p2
将产生比p3
更小的价格,但是仍然高于3000