经典排序案例
1。表结构如下:
create Table List
(
name CHAR(20),
local CHAR(20),
age CHAR(20)
)
返回的结果集格式为:
按地区排序,但是地区按枚举输出,
每个地区显示一条记录,按地区循环显示,下面只列出了3个地方作例子。
(各地区人数不定也不等,如果该地方没有人可以填充了,就跳过去不显示)
如:
name local age
张三 河北 10
李四 河南 20
王五 山东 18
马六 河北 16
刘七 河南 22
赵八 山东 25
. . .
. . .
. . .
Select Name,Local,Age,
XH=(Select Count(*) from List A where A.Local=B.Local and A.Name<B.Name)
from List B order by XH,Local
2。人員名稱 外出時間 外出趟次
張三 2000-01-01 10:01:01
張三 2000-01-01 13:01:01
張三 2000-01-01 12:01:01
張三 2000-01-02 09:01:01
張三 2000-01-02 15:01:01
張三 2000-01-02 16:01:01
李四 2000-01-01 10:01:01
李四 2000-01-01 11:01:01
目標要求:
人員名稱 外出時間 外出趟次 //記錄某人在某天的第幾次外出
張三 2000-01-01 10:01:01 1
張三 2000-01-01 13:01:01 3
張三 2000-01-01 12:01:01 2
張三 2000-01-02 09:01:01 1
張三 2000-01-02 15:01:01 2
張三 2000-01-02 16:01:01 3
李四 2000-01-01 10:01:01 1
李四 2000-01-01 11:01:01 2
select a.name,a.dt,(select count(name) from tablename
where name=a.name and year(dt)=year(a.dt) and month(a.dt) and day(dt)=day(a.dt) and dt<=a.dt) as ncount
from tablename a
order by a.dt
3.ID 名称
1 B
2 A
3 C
4 B
5 A
6 B
其中ID是主键,现在希望通过SQL查询得到以下结果
ID 名称 次数
1 B 1
2 A 1
3 C 1
4 B 2
5 A 2
6 B 3
其中"次数"是指以ID为顺序,名称是第几次出现。
Select id,名称,
(select count(id) from table1 where 名称=AAA.名称 and id<=AAA.id) as 次数
From table1 AAA