日期:2014-05-16 浏览次数:20904 次
select ss.* ,rownum from (select 手机号码 ,sum(充值金额) B from 充值记录表 where 手机号码='13313312345' group by 手机号码 order by B DESC) ss
------解决方案--------------------
既然只查询一个手机的汇总,应该在子查询中就应该将其它的手机号过滤掉。
而且可以省去费时的ORDER BY
参考代码如下:
SELECT ss.*, ROWNUM FROM (SELECT 手机号码, SUM(充值金额) B FROM 充值记录表 WHERE 手机号码='133133123445' GROUP BY 手机号码 ) ss
------解决方案--------------------
GROUP BY 手机号码 也可以省略,就一个号码,还GROUP BY 什么呢。
SELECT ss.*, ROWNUM
FROM
(SELECT 手机号码, SUM(充值金额) B
FROM 充值记录表
WHERE 手机号码='133133123445'
) ss
------解决方案--------------------
因为有聚合函数啊,否则会提示错误。
当然可以通过加上over()来解决。
参考如下:
SELECT ss.*, ROWNUM FROM (SELECT 手机号码, SUM(充值金额) OVER() AS B FROM 充值记录表 WHERE 手机号码='133133123445' ) ss