首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个日期范围的sql count语句

具有多个日期范围的sql count语句
EN

Stack Overflow用户
提问于 2014-06-01 14:04:20
回答 3查看 1.2K关注 0票数 0

我有两张不同约会日期的桌子。

表1

代码语言:javascript
复制
id  start date
1   5/1/14
2   3/2/14
3   4/5/14
4   9/6/14
5   10/7/14

表2

代码语言:javascript
复制
id  start date
1   4/7/14
1   4/10/14
1   7/11/13
2   2/6/14
2   2/7/14
3   1/1/14
3   1/2/14
3   1/3/14

如果我设置了日期范围,我可以计算每个约会日期,但我需要更改日期范围。对于表1中的每个id,我需要从表2中添加不同的任用日期,但只需比表1中的开始日期早6个月。例如:将id 1(表2)的所有不同任用日期计算在内,任用日期为12/1/13至5/1/14 (6个月前)。结果是2.4/7/14和4/10/14在6个月之内,7/1/13在6个月之外。

因此,我的问题是,每个记录的范围都在变化,我似乎不知道如何编写this.For id 2,日期范围是9/1/14-3/2/14等等。

提前谢谢大家!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-01 14:18:21

试试这个:

代码语言:javascript
复制
 SELECT id,
        (
            SELECT  COUNT(*)
            FROM    table2
            WHERE   id = table1.id
                AND table2.start_date >= DATEADD(MM,-6,table1.start_date)
        ) AS table2records
 FROM   table1

DATEADD从table1中的日期起减去6个月,子查询返回相关记录的计数。

票数 0
EN

Stack Overflow用户

发布于 2014-06-01 14:08:41

我想你想要的是一种加入。

代码语言:javascript
复制
select t1.id, count(t2.id) as numt2dates
from table1 t1 left outer join
     table2 t2
     on t1.id = t2.id and
        t2.startdate between dateadd(month, -6, t1.startdate) and t1.startdate
group by t1.id;

日期算法的确切语法取决于数据库。

票数 0
EN

Stack Overflow用户

发布于 2022-05-16 21:18:04

谢谢你这解决了我的问题。虽然这可能对您没有帮助,因为您没有尝试按日期分组。但答案给了我解决我所面临的问题的洞察力。

我试图收集用户总数,这是一个必须由多个字段评估的日期标准。

以数据为(选择generate_series( (日期‘2020-01’)::时间戳,现在(),间隔'1周‘)为日期) 从历史h中选择d.date,(从历史h中选择COUNT(DISTINCT h.id)作为user_count,其中h.startDate < d.date和h.endDate > d.date顺序由1 DESC指定)从数据d顺序选择d.date DESC为total_records

2022-05-16,15 2022-05-09,13 2022-05-02,13 .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23980662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档