SELECT
LEAST(col1, col2) AS col1,
GREATEST(col1, col2) AS col2,
SUM(col3) AS sum_c
FROM yourtable
GROUP BY
LEAST(col1, col2),
GREATEST(col1, col2)
ORDER BY col1, col2;
SELECT
CASE WHEN a <= b THEN a ELSE b END AS col1,
CASE WHEN a <= b THEN b ELSE a END AS col2,
SUM(c) AS sum_c
FROM your_table
GROUP BY col1, col2
ORDER BY col1, col2;
GROUP BY子句按col1和col2的唯一组合对行进行分组,ORDER BY子句按指定顺序对结果进行排序,CASE语句确保列A和B中的值排序一致,以便将“a b”和“b a”视为相同的组合,最后,SUM函数用于聚合列C中的值
2条答案
按热度按时间bxgwgixi1#
我们可以在bothcolumn selection和
GROUP BY
子句中使用LEAST
和GREATEST
:根据您的数据在此sample fiddle上试用。
这里不需要
CASE WHEN
。mccptt672#
我建议查看分组和排序功能,这是一个如何使用group by和order by来实现您正在尝试做的事情的示例-
GROUP BY
子句按col1
和col2
的唯一组合对行进行分组,ORDER BY
子句按指定顺序对结果进行排序,CASE
语句确保列A和B中的值排序一致,以便将“a b”和“b a”视为相同的组合,最后,SUM
函数用于聚合列C中的值