sql - 如果条件为 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 在本月(当前月份)之前仍然收到佣金 - 我想将他排除在列表。如果他在上个月或去年停止接收通讯,我想在桌子上看到他。换句话说,我想要一张老客户(不再收取佣金)的桌子
解决方案
使用聚合。假设每月有一行:
select id, count(*)
from t
group by id
having max(months) < date_format(now(), '%Y-%m');
请注意,这使用 MySQL 语法,这是原始标签之一。
推荐阅读
- google-apps-script - 使用 UrlFetchApp.fetch() 函数获取 Looker API 访问令牌并获取超时错误
- ansible - 我可以在 tasks/main.yml 中的 include_tasks 中包含多个任务吗?
- angular - Angular HttpInterceptor 最终从不调用错误
- python - pybind11 中是否可以使用 py::cast 访问抽象基类?
- python - 一行逻辑测试检查一个列表中的所有项目是否存在于另一个列表中
- upload - Apollo-Server-Express 未收到上传对象
- angular - Angular - Amazon S3 - 在下载时从 AWS 签名 URL 更改文件名
- python - 使用 numpy 库定义变量时修复无效语法 - python
- java - 查询可能不存在的行的正确方法 - Java8
- vba - 如何在 MS Access/VBA 中使用带参数的 SQL 作为组合框行源