锁定老帖子 主题:某牛企一sql面试题目~~~~~~~~
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-04
说实话 我不会弄
|
|
返回顶楼 | |
发表时间:2011-07-04
说实话 我也刚刚学会弄,不是看了这个帖子学会的,没做过的永远不会啊,所以面试的时候问题百花齐放。
|
|
返回顶楼 | |
发表时间: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 这没必要吧 |
|
返回顶楼 | |
发表时间:2011-07-05
最后修改:2011-07-05
哥能力差,刚开始就想到这个了,也算一种方案吧~~
|
|
返回顶楼 | |
发表时间:2011-07-16
确实没写过报表。。
如果是我的话。。当场可能会 写三个查询然后 union出来把。 |
|
返回顶楼 | |
发表时间: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的也粗心大意。 |
|
返回顶楼 | |
发表时间: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的也粗心大意。 |
|
返回顶楼 | |
发表时间: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计算,学习到了。。。 |
|
返回顶楼 | |