select ss.* ,rownum
from (select 手机号码 ,sum(充值金额) B from 充值记录表 group by 手机号码 order by B DESC) ss
where 手机号码='13313312345'
大家帮忙看一下这个sql语句写得有没有什么问题,除了建立索引还有哪些优化的地方?
from (select 手机号码 ,sum(充值金额) B from 充值记录表 group by 手机号码 order by B DESC) ss
where 手机号码='13313312345'
大家帮忙看一下这个sql语句写得有没有什么问题,除了建立索引还有哪些优化的地方?
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
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
还是要GROUP BY 的,如果这个号码对对应多条记录,以上后产生重复记录