设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量x(销售单价一单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。(10分)

题目

设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量x(销售单价一单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。(10分)


相似考题

1.设商场业务系统中有销售单据表(销售单据号, 收款员, 销售时间),销售明细表(销售明细条目号, 销售单据号, 商品号, 数量, 单位, 金额)和商品表(商品号, 商品名, 价格)。该系统业务繁忙,保存的数据量非常大,每次换班时要统计收款员的收入总额,每天停业后要统计各个商品的当天销售量,销售过程中经常需要查询某笔销售业务的情况。为了优化系统性能,下列优化方案合理的是A.在销售单据表的收款员属性上建立聚集索引,在销售明细表的销售单据号属性上建立非聚集索引,在商品表的商品号属性上建立聚集索引B.在销售单据表的销售单据号属性上建立聚集索引,在销售明细表的销售单据号属性上建立非聚集索引,在商品表的商品号属性上建立聚集索引,建立收款员单班销售量表和商品当天销售汇总表,在每笔销售成交后分别累计统计相应数据C.在销售单据表的销售时间属性和收款员属性上分别建立聚集索引,在销售明细表的销售单据号属性上建立非聚集索引,在商品表的商品号属性上建立聚集索引,建立收款员单班销售量表和商品当天销售汇总表,在每笔销售成交后分别累计统计相应数据D.在销售单据表的销售单据号属性和收款员属性上分别建立聚集索引,在销售明细表的商品号属性上建立聚集索引

更多“设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中, ”相关问题
  • 第1题:

    在SQL Server 2008中,有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售价格)。现要限制“销售价格”的取值必须在此商品“单价”的0.6倍到1.5倍范围之内,实现这个约束的正确代码是( )。

    A.CHECK(销售价格BETWEEN单价*0.6 AND单价*1.5)

    B.CHECK(销售价格BETWEEN商品表.单价*0.6 AND商品表.单价*1.5)

    C.CREATE TRIGGER tri_Sales ON销售表FOR INSERT,UPDATEAs IF EXISTS(SELECT*FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*1.5)ROLLBACK

    D.CREATE TRIGGER tri_ales ON销售表INSTEAD OF INSERT,UPDATE ASIF EXISTS( SELECT冰FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*=1.5)ROLLBACK


    正确答案:C
    FOR指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器,这种触发器称为后触发型触发器。INSTEADOF指定执行触发器而不是执行引发触发器执行SQL语句,从而替代触发语句的操作,称这种触发器为前触发型触发器。

  • 第2题:

    查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是

    A.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价DESC

    B.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价

    C.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ON商品.商品号=销售.商品号ORDER BY单价

    D.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 AND商品.商品号=销售.商品号ORDER BY单价DESC


    正确答案:D
    解析:按单价降序排列应在ORDER BY后跟DESC短语,因此排除B)和C)选项。选行多表查询时,指定两表关键字进行连接时,JOIN短语必须与ON短语联合使用,故选项A)错误。

  • 第3题:

    查询商品单价在10到50之间,并且日销售数量高于20的商品名,单价,销售日期和销售数量,查询结果按单价降序,正确命令是( )

    A.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>=20 ORDER BY单价DESC

    B.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20

    C.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20 ON商品.商品号=销售.商品号ORDER BY单价

    D.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20 AND商品,商品号=销售,商品号ORDER BY单价DESC


    正确答案:D
    D。【解析】根据题意,A选项中使用了JOIN但是少了ON语句所以错误;B选项中不仅没有使用ON语句同时也没有使用降序排列,所以B选项错误;C选项中没有使用降序排列;D选项根据题意进行了查询并将查询结果按照降序进行排列,所以正确。

  • 第4题:

    查询单价最高的商品销售情况,查询结果包括商品号、商品名、销售日期、销售数量和销售金额。正确命令是

    A.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=(SELECT MAX(单价)FROM商品)

    B.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=MAX(单价)

    C.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=(SELECT MAX(单价)FROM商品)

    D.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=MAX(单价)


    正确答案:A
    解析:在指定连接字段时可以用WHERE指定连接条件,也可以用超连接关键字JOIN表示普通连接,即只有满足连接条件的记录才出现在查询结果中,但JOIN后面必须用ON子句指定连接条件,故选项C)和D)是错误的,选项B)中的WHERE语句“单价=MAX(单价)”没有指明MAX(单价)这个最大值来自哪个表,故选A)。

  • 第5题:

    查询销售金额合计超过20000的商店,查询结果包括商店名和销售金额合计。正确命令是

    A.SELECT商店名,SUM(销售数量*单价)AS销售金额合计 FROM商店,商品,销售. WHERE销售金额合计20000

    B.SELECT商店名,SUM(销售数量*单价)AS销售金额合计>20000 FROM商店,商品,销售 WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号

    C.SELECT商店名,SUM(销售数量*单价)AS销售金额合计 FROM商店,商品,销售 WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号 AND SUM(销售数量*单价)>20000 GROUP BY商店名

    D.SEKECT商店名,SUM(销售数量*单价)AS销售金额合计 FROM商店,商品,销售 WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号 GROUP BY商店名HAVING SIJM(销售数量*单价)>20000


    正确答案:D
    解析:要查询销售金额合计超过20000的商店,首先要按商店名分组计算销售金额合计,然后用HAVING短语限定分组后查询的条件是销售金额合计超过20000的商店。故D)是正确的。