关于sql中常用到入门级Group By和聚合函数的笔记

1.这是一个保存用户登录信息的表:

ID

NAME

TIME

1 wayne 2008-02-02 00:00:00.000
2 wayne 2008-02-02 00:00:00.000
3 tom 2009-03-20 00:00:00.000
4 tom 2009-01-20 00:00:00.000
5 tom 2009-03-20 00:00:00.000
6 jack 2008-03-02 00:00:00.000
7 jack 2009-02-02 00:00:00.000
8 lucy 2008-02-04 00:00:00.000

要求:根据每个登录用户的最新时间检索出登录名和时间,like this:

jack       2009-02-02 00:00:00.000
lucy       2008-02-04 00:00:00.000
tom       2009-03-20 00:00:00.000
wayne   2008-02-02 00:00:00.000

分析:这是根据name来分组检索最新时间的查询语句,所以group by conditions NAME,and max(TIME),so this sql is

select [name],max([time]) from Table_Name group by [name]

2.根据上面的例子延伸出一个报价表:

ID

NAME

TIME

PRICE
1 wayne 2008-02-02 00:00:00.000 2.00
2 wayne 2008-02-02 00:00:00.000 20.00
3 tom 2009-03-20 00:00:00.000 3.00
4 tom 2009-01-20 00:00:00.000 12.00
5 tom 2009-03-20 00:00:00.000 123.00
6 jack 2008-03-02 00:00:00.000 3.00
7 jack 2009-02-02 00:00:00.000 4.00
8 lucy 2008-02-04 00:00:00.000 5.00

条件:1.每个报价人的最新时间 2.在最新时间的情况下得到每个报价人的最高报价,like this:

jack      4.00
lucy       5.00
tom       123.00
wayne   20.00

分析:第一先要等到最新时间,根据time和name匹配最大的price,这样我们需要写inner join 到上一个例子中,

select a.name,max(price) from Table_Name as a
inner join (select name ,max(time) as time from Table_Name  group by name) as b
on a.name=b.name and a.time=b.time group  by a.name

posted on 2009-03-27 23:58  wayne_wang  阅读(608)  评论(0)    收藏  举报