MySQL中的第2组和第2组值组合在一起

时间:2013-06-16 15:10:19

标签: mysql group-by

让我们说我们有一个查询

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

2 个答案:

答案 0 :(得分:2)

  

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

您可以使用案例陈述来完成此操作。它的表现不会很好,但它会奏效。根据您的实际值,最终查询可能如下所示:

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

答案 1 :(得分:1)

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

如果您确实有相关数字,可以这样做:

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)