mysql中,我有一个表,表里有薪资这一列,但是薪资这一列的格式是10-13k,8-13k,25-300k这种类型的格式,我想 进行一个比较,计算薪资里,小于10k的作为一列,10k-20k的作为一列,20k-30k的作为一列,30k-40k的作为一列,50k以上的作为一列,并统计有多少个,例如8-13k,这种就弄成10k-20k,按最高的来,统计出来单独弄几个列
时间: 2024-03-09 17:46:16 浏览: 57
你可以使用 MySQL 的 SUBSTRING_INDEX 和 CAST 函数来提取薪资中的最高值,并将其转换为数字格式。然后,你可以使用 CASE 和 COUNT 函数来计算符合条件的行数,并将它们分组到不同的列中。以下是示例查询:
```
SELECT
COUNT(CASE WHEN CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) < 10000 THEN 1 END) AS "<10k",
COUNT(CASE WHEN CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) >= 10000 AND CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) < 20000 THEN 1 END) AS "10k-20k",
COUNT(CASE WHEN CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) >= 20000 AND CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) < 30000 THEN 1 END) AS "20k-30k",
COUNT(CASE WHEN CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) >= 30000 AND CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) < 40000 THEN 1 END) AS "30k-40k",
COUNT(CASE WHEN CAST(SUBSTRING_INDEX(salary, '-', -1) AS UNSIGNED) >= 50000 THEN 1 END) AS ">50k"
FROM your_table;
```
该查询将从名为 `your_table` 的表中选择所有行,并将它们分组到不同的列中,根据薪资的最高值。你可以将 `your_table` 替换为实际表名,并将 `salary` 替换为包含薪资的列的名称。
阅读全文