因此,我正在使用MS Access,并有此参与者列表,其中有三列age,name和age_group,并希望它首先按名称排序,然后按年龄排序,再根据基于相同名称的age_group的频率排序。例如:
age | age_group |name
----------------------
1 0-1 Jeff
10 10=< Dave
10 10=< Dave
5 5-7 Carl
2 2-4 Sam
3 2-4 Carl
4 2-4 Sam
2 2-4 Sam
5 5-7 Carl
6 5-7 Jeff
7 5-7 Dave
10 10=< Jeff
8 8-9 Jeff
所以它首先看起来像这样,按名称和年龄排序
----------------------
10 10=< Jeff
8 8-9 Jeff
6 5-7 Jeff
1 0-1 Jeff
10 10=< Dave
10 10=< Dave
7 5-7 Dave
5 5-7 Carl
5 5-7 Carl
3 2-4 Carl
4 2-4 Sam
2 2-4 Sam
2 2-4 Sam
最后是age_group频率,基于相同名称,降序为10 =
age | age_group |name
----------------------
10 10=< Dave
10 10=< Dave
7 5-7 Dave
10 10=< Jeff
8 8-9 Jeff
6 5-7 Jeff
1 0-1 Jeff
5 5-7 Carl
5 5-7 Carl
3 2-4 Carl
4 2-4 Sam
2 2-4 Sam
2 2-4 Sam
这可以在SQL或VBA中完成吗?我得到第一个与之合作的东西:
SELECT participants.name, participants.age_group, participants.age, *
FROM participants
ORDER BY participants.name, participants.age DESC;
但是我在执行第二步时完全迷失了……如果您能帮助我,将不胜感激。
尝试一下:
select p1.name, p2.age_group, p2.age
from participants as p1
left join (select name, age_group, count(1) as freq from participants group by name, age_group) as p2
on p1.name= p2.name and p1.age_group = p2.age_group
order by name,age, p2.freq desc
这应该做:
SELECT
[name],
age_group,
age
FROM
participants
GROUP BY
[name],
age,
age_group
ORDER BY
[name],
age Desc;