又栽在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
[解决办法]
第一题如下:
第二题如下: