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.age DESC 用于按照职业类型和年龄降序排序结果集。

注意:

  • 上述查询假设你的数据表名为 DATA$,请根据实际情况进行修改。
  • occupation_vcustomer_idagemon_salary_v 是你的数据表中的字段名,请根据实际情况进行修改。

希望这个修正后的查询语句能帮助你解决问题。如果你还有其他问题,请随时提出。

MySQL 查询每个职业类型下年龄最高的前 5 名用户

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

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