我有三列:发送者、接收者、短信数量。
我需要通过获得两列的平均值来压缩行。
假设Carol向Jack发送8条短信,Jack向Carol 4发送短信,结果将是这两个人之间的6条消息。
有关更好的描述,请参见下图。
发布于 2019-04-18 22:51:00
在SQL中执行此操作的典型方法如下所示:
select least(sender, receiver) as person1,
greatest(sender, receiver) as person2,
sum(num)
from t
group by least(sender, receiver),
greatest(sender, receiver);
有些数据库不支持least()
和greatest()
。可以用case
表达式替换这些表达式。
select (case when sender < receiver then sender else receiver end) as person1,
(case when sender >= receiver then sender else receiver end) as person2,
sum(num)
from t
group by (case when sender < receiver then sender else receiver end),
(case when sender >= receiver then sender else receiver end);
https://stackoverflow.com/questions/55748487
复制相似问题