总结一下SQL同一家餐厅中的任何一对披萨



条件:

  1. 预算$ 40

  2. 从同一家餐厅购买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,这表明您确实打算平等。

相关内容

最新更新