首页 > 解决方案 > 如果条件为 TRUE 连续(即分组)

问题描述

桌子:

|Months |ID|Commission|
|2020-01|1 |2312      |
|2020-02|2 |24412     |
|2020-02|1 |123       |
|...    |..|...       |

我需要的:

COUNT(Months),
ID,
SUM(Commission),
Country

GROUP BY ID...

它应该看起来如何:

|Months |ID|Commission|
|4      |1 |5356      |
|6      |2 |5436      |
|...    |..|...       |

所以我想知道每个 ID 收到他的佣金是多少个月,但是(这就是我寻求您帮助的部分)如果该 ID 在本月(当前月份)之前仍然收到佣金 - 我想将他排除在列表。如果他在上个月或去年停止接收通讯,我想在桌子上看到他。换句话说,我想要一张老客户(不再收取佣金)的桌子

标签: sql

解决方案


使用聚合。假设每月有一行:

select id, count(*)
from t
group by id
having max(months) < date_format(now(), '%Y-%m');

请注意,这使用 MySQL 语法,这是原始标签之一。


推荐阅读