假设我有一些示例数据salary_table
如下:
id name year avg_salary
--------------------------------------------
1 1 alice 2019 17410.407500
2 2 elsa 2020 14562.580000
3 3 edward 2019 15234.580000
4 4 anna 2021 15934.580000
.....
99 999 mike 2019 7410.407500
100 1000 mike 2020 17410.407500
我尝试使用下面的 SQL 可以得到我需要的结果,
SELECT
concat(id,'/',name),
JSON_ARRAYAGG(
JSON_OBJECT(
"year", year, "avg_salary", avg_salary
)
) as detail
FROM salary_table
GROUP BY 1
ORDER BY 1 ASC
但是上面的结果很难看,
id/name detail
----------------------
1/alice [{"year": 2019, "avg_salary": 17410.407500}, {"year": 2020, "avg_salary": 21331.052857}, {"year": 2021, "avg_salary": 19101.316667}]
2/elsa [{"year": 2020, "avg_salary": 14562.580000}]
3/edward [{"year": 2019, "avg_salary": 15234.580000}]
4/anna [{"year": 2021, "avg_salary": 15934.580000}]
5/ann [{"year": 2020, "avg_salary": 11331.052857}, {"year": 2021, "avg_salary": 9101.316667}]
6/cathy [{"year": 2018, "avg_salary": 7410.407500}, {"year": 2019, "avg_salary": 7410.407500}, {"year": 2020, "avg_salary": 11331.052857}, {"year": 2021, "avg_salary": 9101.316667}]
我的完美输出如下,实际上,我的结果中不需要 JSON_ARRAYAGG:
-----------------
id name 2018_avg_salary 2019_avg_salary 2020_avg_salary 2021_avg_salary
1 alice 17410.4075 21331.05286 21331.05286 21331.05286
2 elsa 17411.4075 21332.05286 21332.05286 21332.05286
如何美化MySQL中JSON_ARRAYAGG/JSON_OBJECT的SQL查询?