今天遇到一个需求:

假如我有这几个数字:
用户:       user
消费:       fee

现在数据库里面可能一个用户有多条数据。
例如:

id  user     fee
1  张三    100
1  张三    50
1  张三    20

2  李四    30
2  李四    20

3  小王    1000

现在我需要这样的结果:

不仅要统计出明细而且要总和,并且按 fee,id排序

小王    1000

张三  170
张三    100
张三    50
张三    20

李四    50
李四    30
李四    20


用union all,在计算出来的结果上再order by就达到了最初的效果了。

select *
  
from (select t.id, '' name, sum(t.fee) fee, '' fff, '' ff, sum(t.fee) fee2
          
from tt_test t
         
group by t.id
        
union all
        
         (
select a.*, b.fee2
           
from tt_test a,
                (
select sum(t.fee) fee2, t.id from tt_test t group by t.id) b
          
where a.id = b.id)) s

 
order by s.fee2 desc, s.id

感觉有点麻烦,不知道有好的方法没
分享到:
评论