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

数据库结构如下:用户名购气日期购气量张三2012-05-06100李四2012-06-05200王五2013-02-0150李四2012-05-06100李四2012-0... 数据库结构如下:
用户名 购气日期 购气量
张三 2012-05-06 100
李四 2012-06-05 200
王五 2013-02-01 50
李四 2012-05-06 100
李四 2012-06-08 200
张三 2012-08-09 50
=========
希望得到结果:
用户名 购气日期 购气量 购气次数 购气总量
张三 2012-08-09 50 2 150
李四 2012-06-08 200 3 500
王五 2013-02-01 50 1 50
展开
 我来答
yao12712q
2013-03-14 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:58.8万
展开全部
这个得用开窗函数,我知道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 条记录已选择。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-03-14 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885374
团长

向TA提问 私信TA
展开全部
select 用户名,max(购气日期) 购气日期 ,购气量,count(*) 购气次数,sum(购气量) 购气总量 from 表名 group by 用户名,购气量
追问
楼上的SQL语句,不应该加入"group by 用户名,购气量"中的购气量,加入后没有筛选出的结果.
本人使用的语句:select 用户名,count(*) 购气次数,sum(购气量) 购气总量 from 表名 group by 用户名只能得到如下内容,不知道如何把最后一条记录中的"购气日期"和"购气量",带入结果中
用户名 购气次数 购气总量
张三 2 150
李四 3 500
王五 1 50
追答
select a.用户名,a.购气日期,b.购气量,a.购气次数,a.购气总量 
from
(select 用户名,max(购气日期) 购气日期,count(*) 购气次数,sum(购气量) 购气总量 from 表名 group by 用户名) a,
表名 b where a.用户名=b.用户名 and a.购气日期=b.购气日期
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-14
展开全部
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
用户名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VisionCrazy
2013-03-14 · 超过20用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:36.5万
展开全部
这种可以使用Group By

select 用户名,max(购气日期) as 购气日期 ,购气量,count(*) 购气次数 as 购气次数,sum(购气量) as 购气总量 from 表名 group by 用户名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yfy415
2013-03-14
知道答主
回答量:40
采纳率:0%
帮助的人:18.1万
展开全部
with dd as (select 用户名,
max(购气日期) 购气日期,
count( 用户名) 购气次数,
sum(购气量) 购气总量
from 购气 group by 用户名)

select dd.用户名,dd.购气日期,a.购气量,dd.购气次数,dd.购气总量 from 购气 a ,dd where a.购气日期 =dd.购气日期
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式