sql语句,同时查询某记录的平均值,最大值,最小值及最大值时间,最小值时间。

数据表格式字段日期,人名,数据1,[数据1时间],数据2,[数据2时间]。要求:按人名分类查询,avg(数据1),avg(数据2),max(数据1)及对应的[数据1时间]... 数据表格式
字段 日期,人名,数据1,[数据1时间],数据2,[数据2时间]。

要求:按人名分类查询,avg(数据1),avg(数据2),max(数据1)及对应的[数据1时间],min(数据2)及对应的[数据2时间]。
能否用一个sql语句写完,谢谢。
展开
 我来答
ZHFLVG
2013-09-04 · TA获得超过269个赞
知道答主
回答量:79
采纳率:0%
帮助的人:40.6万
展开全部
select 人名,avg(数据1),avg(数据2),max(数据1),min(数据2)

from 表 group by 人名

这样可以查出,除 数据1时间 和 数据2时间 外的字段,你这连个测试数据都没有,根本就没办法分析你的问题,你既然 取了max(数据1),但又要查询 数据1时间,那你这个 数据1时间 到底想要查的是那个数据1 对应的时间。
tim_spac
2013-09-04 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2019万
展开全部
select a.*
    , max_data1, data1_time
    , min_data2, data2_time
from (
    select
        username,
        avg(data1) as avg_data1,
        avg(data2) as avg_data2
    from tb_table a
    group by username
) as a
join (
    select
        username,
        data1 as max_data1,
        min(data1_time) as data1_time
    from tb_table b
    where 1=1
    and not exists (select 1 from tb_table b0
        where b0.username = b.username
        and b0.data1 > b.data1)
    group by username, data1
) as a1 on a1.username = a.username
    select
        username,
        data2 as min_data2,
        min(data2_time) as data2_time
    from tb_table b
    where 1=1
    and not exists (select 1 from tb_table b0
        where b0.username = b.username
        and b0.data2 < b.data2)
    group by username, data2
) as a2 on a2.username = a.username
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真城雅铃aZ
2017-08-17 · TA获得超过951个赞
知道小有建树答主
回答量:487
采纳率:0%
帮助的人:18万
展开全部
ORACLE 可以直接函数取
greatest(repdate,repcreatedate,RepAuditTime,printime)

mssqlserver可能先列转行求分组最大,没有测试环境,忘记了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式