MySQL 查询每个职业类型下年龄最高的前 5 名用户
MySQL 查询每个职业类型下年龄最高的前 5 名用户
问题描述:
你需要用一段 MySQL 查询语句获取每个职业类型下年龄从高到低的前 5 名用户的 customer_id、年龄和月收入。
错误的查询语句:
SELECT
d.`occupation_v` AS '职业类型',
d.`customer_id`,
d.`age` AS '年龄',
d.`mon_salary_v` AS '月收入'
FROM
DATA$ d
GROUP BY d.`occupation_v`
ORDER BY d.`age` DESC
LIMIT 5;
问题分析:
你的查询有一个问题。在使用 GROUP BY 子句时,如果你想要获取每个职业类型下年龄从高到低的前 5 名,你需要在子查询中先按照职业类型进行分组,然后再按照年龄进行排序,最后再使用 LIMIT 子句获取前 5 名。
修正后的查询语句:
SELECT
d.`occupation_v` AS '职业类型',
d.`customer_id`,
d.`age` AS '年龄',
d.`mon_salary_v` AS '月收入'
FROM
DATA$ d
WHERE
(SELECT COUNT(*) FROM DATA$ WHERE occupation_v = d.occupation_v AND age >= d.age) <= 5
ORDER BY d.`occupation_v`, d.`age` DESC;
解释:
- 子查询
(SELECT COUNT(*) FROM DATA$ WHERE occupation_v = d.occupation_v AND age >= d.age)用于计算每个职业类型下年龄大于等于当前行的用户的数量。 WHERE子句限制结果集,只包含每个职业类型下年龄最高的前 5 名用户。ORDER BY d.occupation_v, d.ageDESC用于按照职业类型和年龄降序排序结果集。
注意:
- 上述查询假设你的数据表名为
DATA$,请根据实际情况进行修改。 occupation_v、customer_id、age和mon_salary_v是你的数据表中的字段名,请根据实际情况进行修改。
希望这个修正后的查询语句能帮助你解决问题。如果你还有其他问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/qsEg 著作权归作者所有。请勿转载和采集!