繁体   English   中英

在MySQL中将组2和2值一起

[英]Group 2 and 2 values together in MySQL

可以说我们有一个查询

SELECT recordType,SUM(amount) FROM records GROUP BY recordType

输出量

1: 50
2: 100
3: 150
4: 200

我们有4种不同的记录类型,分别是1,2,3和4。上述查询显然将返回针对这4种类型分组的值。 如何调整查询以基于配对分组显示分组。 像在一行中返回recordType 1和recordType 2的结果,在第二行中返回3和4的结果。

预期产量

Group 1: 150
Group 2: 350

像在一行中返回recordType 1和recordType 2的结果,在第二行中返回3和4的结果。

您可以使用case语句来做到这一点。 它的性能不会很好,但是会起作用。 根据您的实际值,最终查询可能类似于以下内容:

group by case
         when type in(1, 2) then 1
         when type in(3, 4) then 2
         when ...
         else ...
         end

问题的一部分是正确地进行分组,另一部分是获取组的名称。

如果您确实有疑问的数字,可以执行以下操作:

select concat('Group ', cast((recordType - 1)/2 as int)), count(*)
from records r
group by cast((recordType - 1)/2 as int)

如果这些值实际上算术上不那么合适,则变量可能是最简单的方法:

select concat('Group ', @rn := @rn + 1), count(*)
from records r cross join (select @rn := 0) const
group by (case when type in (1, 2) then 1
               when type in (3, 4) then 2
          end)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM