论坛首页 招聘求职论坛

某牛企一sql面试题目~~~~~~~~

浏览 14937 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-04  
说实话 我不会弄
0 请登录后投票
   发表时间:2011-07-04  
说实话 我也刚刚学会弄,不是看了这个帖子学会的,没做过的永远不会啊,所以面试的时候问题百花齐放。
0 请登录后投票
   发表时间:2011-07-05  
liliugen 写道
select distinct r.customerid,
(select count(r0.id) from report r0 where r.customerid = customerid and r0.state = 0) state0,
(select count(r1.id) from report r1 where r.customerid = customerid and r1.state = 1) state1,
(select count(r2.id) from report r2 where r.customerid = customerid and r2.state = 2) state2
from report r

这没必要吧
0 请登录后投票
   发表时间:2011-07-05   最后修改:2011-07-05
哥能力差,刚开始就想到这个了,也算一种方案吧~~
0 请登录后投票
   发表时间:2011-07-16  
确实没写过报表。。
如果是我的话。。当场可能会 写三个查询然后 union出来把。
0 请登录后投票
   发表时间:2012-06-06  
1.select customid,  
2.    count(case status when 0 then status else null end) as status-0,  
3.    count(case status when 1 then status else null end) as status-1,  
4.    count(case status when 2 then status else null end) as status-2  
5.    from custom group by customid.

上面这句SQL的执行结果为:
customerid  state0   state1  state2
001          0       1       2
002          0       1       2
-------------------------------------------
经过对SQL语句简单的分析可以看出,state0这个字段是当state=0的时候显示state字段(条件字段和被显示字段是同一个字段)。既然state0列是当state=0的时候显示的,那么当然整列都是0了。
-------------------------------------------
再看原题:
customerid  state0   state1  state2
001          11       212      333
002          15       545      3

请问,第2行第2列的11,在实际的数据表中是属于哪一列的???
属于state吗?如果属于state,那明显11<>0,为何能够显示在state=0的条件列下面?
不属于state列的话,为什么能显示在state列下面?
-------------------------------------------
出这个题目的人脑子严重进水,写这个SQL的也粗心大意。
0 请登录后投票
   发表时间:2012-06-06  
这位仁兄的的理解能力真是天马行空,人家楼主是问,根据customerid分组 统计status的各种枚举数数!
你写的是什么“那么当然整列都是0了”没看见人家的count么?...

angole 写道
1.select customid,  
2.    count(case status when 0 then status else null end) as status-0,  
3.    count(case status when 1 then status else null end) as status-1,  
4.    count(case status when 2 then status else null end) as status-2  
5.    from custom group by customid.

上面这句SQL的执行结果为:
customerid  state0   state1  state2
001          0       1       2
002          0       1       2
-------------------------------------------
经过对SQL语句简单的分析可以看出,state0这个字段是当state=0的时候显示state字段(条件字段和被显示字段是同一个字段)。既然state0列是当state=0的时候显示的,那么当然整列都是0了。
-------------------------------------------
再看原题:
customerid  state0   state1  state2
001          11       212      333
002          15       545      3

请问,第2行第2列的11,在实际的数据表中是属于哪一列的???
属于state吗?如果属于state,那明显11<>0,为何能够显示在state=0的条件列下面?
不属于state列的话,为什么能显示在state列下面?
-------------------------------------------
出这个题目的人脑子严重进水,写这个SQL的也粗心大意。

0 请登录后投票
   发表时间:2012-06-06  
angole 写道
1.select customid,  
2.    count(case status when 0 then status else null end) as status-0,  
3.    count(case status when 1 then status else null end) as status-1,  
4.    count(case status when 2 then status else null end) as status-2  
5.    from custom group by customid.

上面这句SQL的执行结果为:
customerid  state0   state1  state2
001          0       1       2
002          0       1       2
-------------------------------------------
经过对SQL语句简单的分析可以看出,state0这个字段是当state=0的时候显示state字段(条件字段和被显示字段是同一个字段)。既然state0列是当state=0的时候显示的,那么当然整列都是0了。
-------------------------------------------
再看原题:
customerid  state0   state1  state2
001          11       212      333
002          15       545      3

请问,第2行第2列的11,在实际的数据表中是属于哪一列的???
属于state吗?如果属于state,那明显11<>0,为何能够显示在state=0的条件列下面?
不属于state列的话,为什么能显示在state列下面?
-------------------------------------------
出这个题目的人脑子严重进水,写这个SQL的也粗心大意。

老大。。。。这个是当计算state=0,state=1,state=2的总数。。。。。
您先把题看完在说别人- -。。。相当的无语。

null不会被count计算,学习到了。。。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics