2. [问题2]
创建销售记录详单视图SALES_Detail,要求按日期统计每个售货机上各种商品的销售数量,属性有VEMno、Location、Gno、Brand、Price、amount和SDate。为方便实现,首先建立一个视图SALES_Total,然后利用SALES_Total完成视图SALES Detail的定义。
CREATE VIEW SALES_Total(VEMno, Gno, SDate, amount) AS
SELECT VEMno, Gno, SDate, Count(*)
FROM SALES
GROUP BY ______;
CREATE VIEW ______ AS
SELECT VEM.VEMno, Location, GOODS.Gno, Brand, Price, amount, SDate
FROM VEM, GOODS, SALES_Total
WHERE ______ AND ______;
VEMno,Gno,SDate
SALES_Detail(VEMno,Location,Gno,Brand,Price,amount,SDate)
VEM.VEMno=SALES_Total.VEMno
GOODS.Gno=SALES_Total.Gno
注:后两空可互换
3. [问题3]
每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则自动向缺货单中添加一条缺货记录。需要用触发器来实现缺货单的自动维护。程序中的GetTime()获取当前时间。
CREATE ______ OOS_TRG AFTER ______ ON SALES
REFERENCING new row AS nrow
FOR EACH ROW
BEGIN
INSERT INTO OOS
SELECT SALES.VEMno, ______, GetTime()
FROM SALES
WHERE SALES.VEMno = nrow.VEMno AND SALES.Gno = nrow. Gno
AND SALES.SDate = nrow. SDate
GROUP BY SALES.VEMno, SALES.Gno, SALES.SDate
HAVING count(*) > 0 AND mod(count(*), 10) = 0;
END
TRIGGER
INSERT
SALES.Gno,SALES.SDate
4. [问题4]
查询当天销售最多的商品编号、品牌和数量。程序中的GetDate()获取当天日期。
SELECT GOODS.Gno, Brand, ______
FROM GOODS, SALES
WHERE GOODS.Gno = SALES.Gno AND SDate = GetDate()
GROUP BY ______
HAVING ______ ( SELECT count(*)
FROM SALES
WHERE SDate = GetDate()
GROUP BY Gno );
count(*)
GOODS.Gno,Brand
count(*)>=ALL