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

时间:2011-07-28 22:29:55

标签: 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)

有没有办法在没有多个查询的情况下执行此操作?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我相信你需要在进行交易时更新一个列,或者有一个带有id,事务时间和事务列的表,其中id是id,事务时间是每当他们进行事务和事务列增量为1时每次进行交易,然后创建单个查询,其中交易大于或等于1且交易时间大于或等于当前时间 - 1年(以秒为单位)

答案 2 :(得分:0)

好的,有一个变量,它是当前日期的格式与你现在的表格相同,然后做数据库的日期+ 1年大于等于当前日期,如果不是那么它超过一年< / p>