求SQL语句,希望能从数据库中筛选同一用户的最后一次购气记录,同时统计该用户的所有购气次数和总购气量!

2024-12-28 04:41:14
推荐回答(5个)
回答1:

这个得用开窗函数,我知道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 条记录已选择。

回答2:

select 用户名,max(购气日期) 购气日期 ,购气量,count(*) 购气次数,sum(购气量) 购气总量 from 表名 group by 用户名,购气量

回答3:

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
用户名

回答4:

这种可以使用Group By

select 用户名,max(购气日期) as 购气日期 ,购气量,count(*) 购气次数 as 购气次数,sum(购气量) as 购气总量 from 表名 group by 用户名

回答5:

with dd as (select 用户名,
max(购气日期) 购气日期,
count( 用户名) 购气次数,
sum(购气量) 购气总量
from 购气 group by 用户名)

select dd.用户名,dd.购气日期,a.购气量,dd.购气次数,dd.购气总量 from 购气 a ,dd where a.购气日期 =dd.购气日期