找工作两次被拒了,但却不知道问题出在哪,还请大侠们帮我看看,谢谢。

snfdf 2016-10-20 10:03:24
以下为招聘单位试题,人家说我题目理解不对,所以没要我。我确实对题目有点异议,但也不知道问题出在哪,还请大侠们帮我看看,也好知道问题出在哪里了,以后也可改进,多谢。

有数据表如下:
商品资料表(Goods)
字段名 说明
GoodsId 商品编号,字符型
GoodsClass 商品分类,字符型

商品库存表(Stock)
字段名 说明
GoodsId 商品编号,字符型
StockNum 商品库存,数字型

商品销售明细(SaleItem)
字段名 说明
ItemId 记录号
GoodsId 商品编号,字符型
SaleNum 商品销量,数字型
SaleDate 销售日期,日期型

3、用Sql语句求出每天销售排行(日期升序,数量降序) (15分) //这里如果日期按降序排列似乎更合理些

select sum(SaleNum),SaleDate from SaleItem group by SaleDate order by SaleDate,sum(SaleNum) desc

4、用Sql语句求出每个商品剩余库存 (30分)

从表结构看‘商品库存表’的‘StockNum’既是商品库存。直接使用‘select * from Stock’即可查看库存
考虑到题目应该不会这么简单,故假设商品销售时商品库存表库存数量不减,既求商品库存需使用商品库存表的‘StockNum’数量减去‘商品销售明细’中所有该商品的销售数量,如下:
select s.Goodsid,(s.StockNum-isnull(g.数量,0)) 库存 from Stock s left join (select Goodsid,sum(SaleNum) as 数量 from Saleitem group by GoodsId) g on s.GoodsId=g.GoodsId

5、用Sql语句求出每个分类有多少在库商品未参与销售(40分)

select a.GoodsClass,sum(a.StockNum) 数量 from (select g.GoodsClass,s.StockNum from Goods g,Stock s where g.GoodsId=s.GoodsId) a group by a.GoodsClass

说明:Sql语句可用Ms SqlServer 或 ORACLE语法
代码为我的答案。人家也不愿意多说,我也不知道问题在哪。已经两次上机被拒了,感觉有点沮丧,求安慰。
...全文
93 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
snfdf 2016-10-20
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
3、用Sql语句求出每天销售排行(日期升序,数量降序) (15分) //这里如果日期按降序排列似乎更合理些 -------------个人观点,销售日期 估计是用datetime类型,销售不可能只记日期(年月日)
SELECT  SUM(SaleNum) ,
        CAST(SaleDate AS DATE) AS SaleDate ,
        GoodsId
FROM    SaleItem
GROUP BY CAST(SaleDate AS DATE) ,
        GoodsId
ORDER BY CAST(SaleDate AS DATE) ,
        SUM(SaleNum) DESC;
4、用Sql语句求出每个商品剩余库存 (30分) ----------后面一堆文字是你想象出来的吧?,应该是你想多了 这应该是库存表内联商品资料表生成结果集,已销售会出库,不出库会造成数据不准
SELECT  *
        FROM    Stock AS a
                INNER JOIN Goods AS b ON a.GoodsId = b.GoodsId
5、用Sql语句求出每个分类有多少在库商品未参与销售(40分) ---------------- 没排除已销售过的商品
 SELECT  *
        FROM    Stock AS a
                INNER JOIN Goods AS b ON a.GoodsId = b.GoodsId
        WHERE   NOT EXISTS ( SELECT 1
                             FROM   SaleItem
                             WHERE  GoodsId = a.GoodsId );
版主高人,一下子点出了问题所在,让我也明白了为什么我看他的题怪怪的,原来是我搞错了。多谢。
中国风 2016-10-20
  • 打赏
  • 举报
回复
#1 补充了语句部份,这类只要看面试者的思维方式为主,对命题的理解,在工作中便于少出错
中国风 2016-10-20
  • 打赏
  • 举报
回复
3、用Sql语句求出每天销售排行(日期升序,数量降序) (15分) //这里如果日期按降序排列似乎更合理些
-------------个人观点,销售日期 估计是用datetime类型,销售不可能只记日期(年月日)
SELECT  SUM(SaleNum) ,
CAST(SaleDate AS DATE) AS SaleDate ,
GoodsId
FROM SaleItem
GROUP BY CAST(SaleDate AS DATE) ,
GoodsId
ORDER BY CAST(SaleDate AS DATE) ,
SUM(SaleNum) DESC;


4、用Sql语句求出每个商品剩余库存 (30分)
----------后面一堆文字是你想象出来的吧?,应该是你想多了
这应该是库存表内联商品资料表生成结果集,已销售会出库,不出库会造成数据不准
SELECT  *
FROM Stock AS a
INNER JOIN Goods AS b ON a.GoodsId = b.GoodsId

5、用Sql语句求出每个分类有多少在库商品未参与销售(40分)
----------------
没排除已销售过的商品
 SELECT  *
FROM Stock AS a
INNER JOIN Goods AS b ON a.GoodsId = b.GoodsId
WHERE NOT EXISTS ( SELECT 1
FROM SaleItem
WHERE GoodsId = a.GoodsId );

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧