gpt4 book ai didi

mysql - 按总列中的最低值排序,按年份,并在另一列上使用 GROUP BY

转载 作者:行者123 更新时间:2023-11-29 06:58:04 24 4
gpt4 key购买 nike

我的表如下所示:

wp_infraexchange_market_pivots table

我使用以下查询在表(前端)中输出此数据:

SELECT developer, GROUP_CONCAT(year) AS years, GROUP_CONCAT(total) AS totals, SUM(IFNULL(total, 0)) AS totals_sum
FROM wp_infraexchange_market_pivots
WHERE market_id = 2
GROUP BY developer
ORDER BY totals_sum DESC
LIMIT 20;

这给了我如下所示的输出:

query result

但是,我需要输出相同的数据,但行按给定年份中最低总数排序。那么,如果我想获取 2012 年从最低 total 列排序的结果,并按 ASC 顺序排序,我该如何在 MySQL 查询中执行此操作?这可能吗?

@scais - 已尝试您的答案,但得到以下结果:

enter image description here

这看起来非常接近我所需要的,但我仍然需要 GROUP_CONCAT 才能工作。

好的,所以在 SELECT 中切换到 CASE 语句,它几乎可以正常运行...

SELECT developer, GROUP_CONCAT(year) AS years, GROUP_CONCAT(total) AS totals, SUM(IFNULL(total, 0)) AS totals_sum, 
CASE WHEN year = 2013
THEN total
ELSE NULL
END AS year_total
FROM wp_infraexchange_market_pivots
WHERE market_id = 2
GROUP BY developer
ORDER BY year_total ASC
LIMIT 20;

上面输出了 2012 年的正确顺序和数据,但如果我将其更改为 2013,我就得不到正确的顺序。但不知道为什么。但顺序有缺陷,当我将其更改为 2015、2016 时,它也没有返回正确的顺序。只返回 2012 年的正确顺序。我认为这里发生的情况是,它仅在它找到的第一年返回正确的数据,而不是所有其他年份,它返回 NULL,这扰乱了更大的年份顺序比 2012 年(最低的一年),但不知道如何解决这个问题。

这是我试图通过此查询实现的目标,您可以单击每列的标题并按年份按升序或降序排序:

enter image description here

最佳答案

试试这个:

SELECT developer, GROUP_CONCAT(year) AS years, GROUP_CONCAT(total) AS totals, SUM(IFNULL(total, 0)) AS totals_sum
FROM wp_infraexchange_market_pivots
WHERE market_id = 2
GROUP BY developer
ORDER BY totals_sum DESC, years ASC
LIMIT 20;

关于mysql - 按总列中的最低值排序,按年份,并在另一列上使用 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com