现在的位置: 首页 > 综合 > 正文

一个sql面试题

2014年09月05日 ⁄ 综合 ⁄ 共 1838字 ⁄ 字号 评论关闭

表className中有如下分类:

classID   className
1              衣服
2              裤子
5              帽子
10            鞋子

表productInfo有如下记录:

productID             productName            parentID            clickNum

1                            男士衣服                      1                         90            --衣服类别中这条记录的点击率最高
2                            女士衣服                      1                         80
3                            男士裤子                      2                         70
4                            女士裤子                      2                         90            --裤子类别中这条记录点击率最高
5                            男士帽子                      5                         15
6                            女士帽子                      5                         30            --帽子类别中这条点击率最高
7                            男士鞋子                      10                       65            --鞋子类别中这条点击率最高
8                            女士鞋子                      10                       52
9                            女士鞋子1                    10                       54

现在要求分别把衣服,裤子,帽子,鞋子这些类别中点击率最高的一条记录找出来,然后再降序排列,结果应如下:

productID             productName            clickNum
1                            男士衣服                      90
4                            女士裤子                      90
7                            男士鞋子                      65
6                            女士帽子                      30

 

1:

select a.productid, a.productname, a.clicknum 
from asf a, ( select parentid, max(clicknum) clicknum from asf group by parentid) b
where a.parentid = b.parentid and a.clicknum = b.clicknum
order by a.clicknum desc

 

2。SELECT productID, productName, clickNum
FROM productInfo
WHERE (convert(varchar(20),parentID) + '_' + convert(varchar(20),clickNum) in
          (SELECT convert(varchar(20),parentID) + '_' + convert(varchar(20),MAX(clickNum))
         FROM productInfo
         GROUP BY parentID))

抱歉!评论已关闭.