让我们说我们有一个查询
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
答案 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)