条件:
-
预算$ 40
-
从同一家餐厅购买2个不同的披萨
预期结果:满足上述条件的餐厅列表
数据库架构:客户(CNAME,区域(,餐厅(rname,区域(,披萨(披萨(,卖出(rname,pizza,Price(,Likes(Cname,pizza(
出售表
| rname | Pizzas | Price |
------------------------------
| rname1 | Hawaiian | $10 |
| rname2 | Hawaiian | $20 |
| rname2 | Pizza3 | $20 |
| rname3 | Pizza4 | $20 |
因此,在这种情况下,rname2将是答案,因为$ 20 $ 20 = $ 40。它们来自同一家餐厅,两个比萨饼是不同的。
SQL查询:
SELECT s.rname
FROM Sells s
WHERE s.price < 40 -- Max $40 only. How to total up price of 2 pizzas here?
GROUP BY s.rname
HAVING COUNT(DISTINCT s.pizza)>=2
更新:我的问题是,我想检查是否有2个不同的比萨饼不超过每家餐馆40美元的预算。不是整列的总和。
您想要一个自我加入:
select s1.rname, s1.pizza, s2.pizza
from sales s1 join
sales s2
on s1.rname = s2.rname and s1.pizza < s2.pizza
where s1.price + s2.price = 40;
"预算"建议进行比较<=
。但是问题本身具有$20+$20 = $40
,这表明您确实打算平等。