假设有两个表格:customers(包含customer_id, age, occupation和income字段)和occupations(包含occupation_id和occupation字段)。

可以使用以下SQL查询来获取每个职业类型下,用户年龄从高到低前5名的customer_id,以及该id对应的年龄和月收入:

SELECT c.customer_id, c.age, c.income
FROM (
    SELECT o.occupation, c.customer_id, c.age, c.income,
        ROW_NUMBER() OVER (PARTITION BY o.occupation ORDER BY c.age DESC) AS rn
    FROM customers c
    JOIN occupations o ON c.occupation = o.occupation_id
) c
WHERE c.rn <= 5
ORDER BY c.occupation, c.age DESC;

这个查询使用了子查询来计算每个职业类型下每个用户的年龄,并按照降序排列。然后,外部查询选择每个职业类型下前5名用户的数据,并按照职业类型和年龄降序排列结果


原文地址: http://www.cveoy.top/t/topic/iSXD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录