这个得用开窗函数,我知道db2和oracle支持(我的测试如下)如果有更好的方法,请告诉我
D:\>db2 with aa as (select distinct na, da, row_number() over (partition by na) n, max(ql)over (partition by na order by da desc) ma, count(na) over(partition by na) con, sum(ql) over(partition by na)su from q) select na 名, da 时, ma 气, con 次, su 总 from aa where (na, n) in (select na, max(n) from aa group by na)
名 时 气 次 总
---------- ---------- ----------- ----------- -----------
王五 2013-02-01 50 1 50
张三 2012-05-06 100 2 150
李四 2012-05-06 200 3 500
3 条记录已选择。
select 用户名,max(购气日期) 购气日期 ,购气量,count(*) 购气次数,sum(购气量) 购气总量 from 表名 group by 用户名,购气量
SELECT
t.用户名,
MAX( t.购气日期 ) AS 购气日期,
( SELECT MAX(s.购气量)
FROM 表 s
WHERE s.用户名 = t.用户名
AND s.购气日期 = MAX( t.购气日期 ) ) AS 购气量,
COUNT( t.购气日期 ) AS 购气次数,
SUM( t.购气量 ) AS 购气总量
FROM
表 t
GROUP BY
用户名
这种可以使用Group By
select 用户名,max(购气日期) as 购气日期 ,购气量,count(*) 购气次数 as 购气次数,sum(购气量) as 购气总量 from 表名 group by 用户名
with dd as (select 用户名,
max(购气日期) 购气日期,
count( 用户名) 购气次数,
sum(购气量) 购气总量
from 购气 group by 用户名)
select dd.用户名,dd.购气日期,a.购气量,dd.购气次数,dd.购气总量 from 购气 a ,dd where a.购气日期 =dd.购气日期