【发布时间】:2014-01-18 00:26:57
【问题描述】:
我有一个小的 mysql 表,我正在尝试计算特定日期范围内的不同行。在我走得太远之前,让我澄清一下我在问什么,因为这听起来很简单。
这是桌子
CREATE TABLE IF NOT EXISTS `family_awards` (
`award_id` bigint(50) NOT NULL AUTO_INCREMENT,
`family_id` bigint(50) NOT NULL,
`serviceCode` int(3) NOT NULL,`date_received` date NOT NULL,
`created_in` varchar(40) NOT NULL,`created_on` datetime NOT NULL,
`created_by` varchar(30) NOT NULL,
PRIMARY KEY (`award_id`)
)
一个family_id每年最多可以获得4个奖项(award_id),每季度最多1个。
现在,这是我需要提供给老板的号码。 在 10-1-13 和 12-31-13 之间获得奖励但之前未获得奖励的 family_id 的不同(计数行)数。
我需要能够显示今年第一次在查询季度内有多少 family_ids 获得了福利。
例如:
AWARD_ID. FAMILY_ID. DATE_REC.
1 5 1/15/13
2 7 4/27/13
3 2 6/22/13
4 6 7/28/13
5 5 10/27/13
6 9 11/14/13
第 1 季度(1 月至 3 月)将有 1 个新的、不同的 family_id,这表明这一年是如何开始的。 ... 季度 2 ... 季度 3 第 4 季度(10 月 - 12 月)应该只计算 1,因为 family_id 5 已经在 1 月份获得了奖励。
如何在查询中执行此操作? tyvm
编辑(来自评论):
这是我正在测试的查询:
SELECT distinct(family_id)
FROM family_awards`
WHERE family_id NOT IN (SELECT distinct(family_id)
FROM family_awards
WHERE date_received > '2013-01-01' AND date_received <= '2013-09-30'
) AND
( date_received >= '2013-10-01' AND date_received <= '2013-12-31' )
【问题讨论】:
-
这是我正在测试的查询:
SELECT distinct(family_id) FROMfamily_awards` WHERE family_id NOT IN ( SELECT distinct(family_id) FROM family_awards WHERE date_received > '2013-01-01' AND date_received = '2013-10-01' AND date_received -
。 .这应该被编辑到问题中,而不是在评论中。 (我已经这样做了。)
标签: mysql