读书人

又栽在sql上面了小弟我只能说tmd真

发布时间: 2013-11-08 17:52:14 作者: rapoo

又栽在sql上面了,我只能说tmd,真tmd的,太气人了。。
气自己。。。

冲冲忙忙赶过去面试,过去填张信息表,接着就是两套sql面试题,任选一套。。。

面试题如下:

——————————————————————————————————————
题目一:
学生表 stu
stuid stuname

科目表K
kid kname

成绩表C
cid stuid kid score


求显示效果:如下?

姓名 语文 数学 英语 化学
张三 90 80 79 87
李四 89 87 56 45
王五 97 78 78 85
赵六 50 78 98 79
注:没参加科目分数对应显示为 NULL


题目二:
商品表 pro
proid pname
1 帽子
2 上衣
3 裤子
4 鞋子
... ...

具体商品表 JT,字段如下
JTid jtName parent clicknum
1 女士帽子 1 903
2 男士帽子 1 892
3 儿童帽子 1 981
4 女士上衣 2 349
5 男士上衣 2 980
6 女士裤子 3 87
7 女士鞋子 4 887
... ...
分别为id,具体商品名称,输入那个商品种类,点击次数

求每个商品种类下面点击率最高的"具体商品种类"名称,具体商品id,点击次数,以及所属商品id?


[解决办法]



DECLARE @_pro TABLE (proid INT, pname NVARCHAR(20))
DECLARE @_JT TABLE (JTid INT, jtName NVARCHAR(20), parent INT, clicknum INT)
INSERT INTO @_pro
SELECT 1, '帽子' UNION ALL
SELECT 2, '上衣' UNION ALL
SELECT 3, '裤子' UNION ALL
SELECT 4, '鞋子'
INSERT INTO @_JT
SELECT1, '女士帽子', 1, 903 UNION ALL
SELECT2, '男士帽子', 1, 892 UNION ALL
SELECT3, '儿童帽子', 1, 981 UNION ALL
SELECT4, '女士上衣', 2, 349 UNION ALL
SELECT5, '男士上衣', 2, 980 UNION ALL
SELECT6, '女士裤子', 3, 87 UNION ALL
SELECT7, '女士鞋子', 4, 887
--1.
SELECT pname,JTid,jtName,clicknum FROM @_pro p CROSS APPLY
(
SELECT TOP (1) *
FROM @_JT
WHERE p.proid=parent
ORDER BY clicknum DESC
) t

/*
pname JTid jtName clicknum
-------------------- ----------- -------------------- -----------
帽子 3 儿童帽子 981
上衣 5 男士上衣 980
裤子 6 女士裤子 87
鞋子 7 女士鞋子 887

(4 行受影响)
*/
--2
SELECT pname,JTid,jtName,clicknum FROM
(
SELECT n=ROW_NUMBER() OVER(PARTITION BY parent ORDER BY clicknum DESC ),*
FROM @_JT j JOIN @_pro p ON j.parent=p.proid
) t
WHERE t.n=1


[解决办法]
加油吧!!
SQL code1234567891011121314151617181920212223242526272829303132333435363738394041424344 DECLARE @_pro TABLE (proid INT, pname NVARCHAR(20)) DECLARE @_JT TABLE (JTid INT, jtName NVARCHAR(20), parent INT, clicknum INT) INSERT INTO @_pro SELECT 1, '帽子' UNION ALLSELECT 2, '上衣' UNION ALLSELECT 3, '裤子' UNION ALLSELECT 4, '鞋子'INSERT INTO @_JT SELECT 1, '女士帽子', 1, 903 UNION ALLSELECT 2, '男士帽子', 1, 892 UNION ALLSELECT 3, '儿童帽子', 1, 981 UNION ALLSELECT 4, '女士上衣', 2, 349 UNION ALLSELECT 5, '男士上衣', 2, 980 UNION ALLSELECT 6, '女士裤子', 3, 87 UNION ALLSELECT 7, '女士鞋子', 4, 887 --1. SELECT pname,JTid,jtName,clicknum FROM @_pro p CROSS APPLY ( SELECT TOP (1) * FROM @_JT WHERE p.proid=parent ORDER BY clicknum DESC) t /* pname JTid jtName clicknum -------------------- ----------- -------------------- ----------- 帽子 3 儿童帽子 981 上衣 5 男士上衣 980 裤子 6 女士裤子 87 鞋子 7 女士鞋子 887 (4 行受影响) */ --2 SELECT pname,JTid,jtName,clicknum FROM ( SELECT n=ROW_NUMBER() OVER(PARTITION BY parent ORDER BY clicknum DESC ),* FROM @_JT j JOIN @_pro p ON j.parent=p.proid ) t WHERE t.n=1



[解决办法]
第一题如下:
又栽在sql上面了,小弟我只能说tmd,真tmd的,太气人了。

第二题如下:
又栽在sql上面了,小弟我只能说tmd,真tmd的,太气人了。

读书人网 >SQL Server

热点推荐