|
昨天看了d.c.b.a博客上一篇别出心裁的文章,巧妙地利用sign的特性简化了sql,极大地减少了sql执行的时间,真有化腐朽为神奇的感觉,自己在机器上测试了一下,发现该实现的一个小问题,大家看看偶的测试结果:
select sign(id - 7500),count(*) from test group by sign(id - 7500); SIGN(ID-7500) COUNT(*) ------------- ---------- -1 153 0 1 1 237 如果是偶来做,会不会笨得直接就统计两次呢?真说不准,但通过case when ... end,也可以达到sign的效果,虽然没有d.c.b.a实现方法的简洁,却不会有什么bug,测试如下: select type, count(*) as cnt from (select case when id > 7500 then 1 when id <= 7500 then -1 end as type from test) group by type; TYPE CNT ---------- ---------- -1 154 1 237
|