mySQL 选择去年每个月有交易的任何部门

标签 mysql sql

对于特定的标题,我很抱歉,我很想想一种方法来概括它,但我不是那么有知识 - 猜猜这就是我在这里问的原因......

我有一个包含数百万笔交易的表格,其中一列是执行该特定交易的部门的 ID:

+-----------------------------------+
| ID | DeptID | Amount |    Date    |
+-----------------------------------+
| 1  |   46   |  4.99  | 2010-01-01 |
+-----------------------------------+
| 2  |   46   |  2.99  | 2010-03-07 |
+-----------------------------------+
| 3  |   57   |  9.99  | 2010-04-04 |
+-----------------------------------+

我想执行一个查询,该查询将返回去年每个月至少包含 1 个交易的任何 1 个部门 ID(今天是 2011-07-28,我从 2010-08-01 开始到结束与 2011-07-28)

有没有办法不用多次查询就可以做到这一点?

最佳答案

SELECT DeptID, COUNT(DISTINCT MONTH(`date`)) AS month_count
FROM Transactions
WHERE `date` >= CURDATE() - INTERVAL 1 YEAR
GROUP BY DeptID
HAVING month_count = 12;

关于mySQL 选择去年每个月有交易的任何部门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866545/

相关文章:

sql - 检索具有最近 5 个不同日期的所有记录

sql - 匹配正则表达式中的数字 (Oracle SQL)

sql - Apache Calcite - 使用 SQL 访问 RESTFul 服务

c# - 如何在存储过程中抛出 SQLException

c# - 使用带有 MySQL 的 C# Windows 窗体,清理用户数据的最佳方法是什么。

php 反序列化返回 false

php - MYSQL中左外连接错误结果

php - 按字符串排序顺序显示 mysql 记录

mysql - 按特定顺序搜索子字符串/模式,正则表达式? mysql 数据库

sql - 如果我们只对第一个匹配的子行感兴趣,如何优化 Oracle 中的 JOIN?