id  name  sale
1    tom   20
2    john  50
3    tom   30
4    tom   100
5    jack  20
6    john  15
如何用group by 和order by得出下列显示,以total_sale从多到少排列name  total_sale
tom     150
john     65
jack     20

解决方案 »

  1.   

    select name , sum(sale) sale from tb group by name order by sale desc
      

  2.   

    create table tb(id int, name varchar(10), sale int)
    insert into tb values(1 ,   'tom ' , 20) 
    insert into tb values(2 ,   'john' , 50) 
    insert into tb values(3 ,   'tom'  , 30) 
    insert into tb values(4 ,   'tom'  , 100) 
    insert into tb values(5 ,   'jack' , 20) 
    insert into tb values(6 ,   'john' , 15) 
    goselect name , sum(sale) sale from tb group by name order by sale descdrop table tb/*
    name       sale        
    ---------- ----------- 
    tom        150
    john       65
    jack       20(所影响的行数为 3 行)*/
      

  3.   

    select name , sum(sale)  from tb group by name order by sale desc
      

  4.   


    select name , sum(sale) sale 
    from tb 
    group by name
    order by sale desc