我正在开发一个项目,我是数据库中的新手。我需要帮助回答下面的问题,列出方案和数据库表。
数据库表:
Product
(pid:integer,timestamp:integer,name:string,price:real,location:string)Customer
(cid:integer,email:string)Purchases
(pid:整数,cid:整数,orderid:整数,金额:整数)Totals
(orderid:integer,cid:integer,totalprice:real,timestamp:integer)情境:
产品ID可以在架构中多次出现。每次更新位置或价格时,都会在数据库中添加另一行,其中包含指示更改时间的时间戳。名称不会被更改,因此相同的pid将始终表示相同的名称。
总计是购买表的摘要,显示购买时间以及所有产品的合并价格。
尽可能尽可能早地做出预测。
使用上述数据库并提供以下问题的查询:
查找某些时间点成本超过e20.00的产品名称以及某些时间点产品价格低于e0.10的产品名称。
查找一次性支出超过e200的客户的电子邮件地址。
查找至少有一次价格变动的产品。
查找已在“5-12”和“A3”位置显示的产品名称
查找已购买每件产品的客户的cid,其价格低于e1.00
查找已在商店注册但未购买的客户的cid。
查找已购买量最大的客户的cid。
查找每位注册客户至少购买过一次的最贵产品。
查找自20150625时间戳之后尚未售出但在该日期之前至少售出一次的产品。
杂货店希望改善其数据库。编写一个返回表格的查询,该表格基本上是购买表格,加上购买时产品的价格。
答案 0 :(得分:0)
让我们为您启动项目提供一些帮助❤
在第一个查询中,我们需要专门使用表Products
,并且您希望找到name
高于x且小于y的产品的price
。
首先,我们要从表中获取的列:
SELECT name, price FROM Products
然后,由于您需要的查询产品的价格高于20
,且产品价格低于0.10
,因此您可以使用BETWEEN还原的条件NOT :
SELECT name, price FROM Products
WHERE price NOT BETWEEN 0.10 and 20
你可以命令它更具可读性:
SELECT name, price FROM Products
WHERE price NOT BETWEEN 0.10 and 20
ORDER BY name ASC;
我不确定这是否是您所需要的,但我希望它有所帮助!