如何从顶部隐藏/删除行中的数据

时间:2012-12-20 07:55:37

标签: mysql sql select sum

我有像mysql这样的表事务。

 ____________________________________________________________
 | id | noskom      | nonpbm     |    noskop   |    npbp     |
 |____|_____________|____________|_____________|_____________|
 |  1 | 001         |   10       |       20    |       20    |
 |  2 | 001         |   20       |       10    |       20    |
 |  3 | 002         |    5       |       10    |       20    |
 |  4 | 003         |   30       |        5    |       20    |
 |____|_____________|____________|_____________|_____________|

我想要结果

 select sum(nonpbm),sum(noskop),sum(npbp) from transaction group by noskom

 ____________________________________________________________
 | id | noskom      | nonpbm     |    noskop   |    npbp     |
 |____|_____________|____________|_____________|_____________|
 |  1 | 001         |   30       |       30    |       40    |
 |  2 |             |            |             |             |
 |  3 | 002         |    5       |       10    |       20    |
 |  4 | 003         |   30       |        5    |       20    |
 |____|_____________|____________|_____________|_____________|

什么是mysql查询

3 个答案:

答案 0 :(得分:2)

SELECT 
    noskom , 
    SUM(nonpbm) as nonpbm , 
    sum(noskop) as noskop , 
    sum(npbp) as  npbp
FROM mytable 
GROUP BY noskom 

如果要列出对聚合值有贡献的所有行的ID,您还可以添加此列:

GROUP_CONCAT(id ORDER BY id) AS id

这将为您提供以逗号分隔的ID列表。您可以指定其他分隔符,例如EOL:

GROUP_CONCAT(id ORDER BY id SEPARATOR '\r\n') AS id

'\r\n'是Windows世界中的标准行分隔符。如果您使用的是其他平台,请更改为'\n''\r'

答案 1 :(得分:1)

select transaction.id,t.noskom,t.sum_nonpbm,t.sum_noskop,t.sum_npbp
from transaction
left join 
(
   select noskom, min(id) min_id, 
               sum(nonpbm) sum_nonpbm,
               sum(noskop) sum_noskop,
               sum(npbp) sum_npbp 
   from transaction 
   group by noskom
) t on (transaction.id=t.min_id)
order by transaction.id

答案 2 :(得分:1)

尝试此查询::

select tbl2.id,tbl1.noskom,tbl1.sum1,tbl1.sum2,tbl1.sum3 from
(select id,noskom,sum(nonpbm) sum1,sum(noskop) sum2,sum(npbp) sum3 from tbl group by noskom) tbl1
 right join
(select id,null a,null b,null c,null d
from tbl) tbl2
on tbl1.id = tbl2.id
order by 1 ;