当前位置: 首页 > 面试题库 >

SQL逻辑问题和交叉应用查询

王才英
2023-03-14
问题内容

给定开始日期和结束日期,我需要计算这两个日期之间的实例数。因此,给出以下内容:

桌子:

Col 1   Start_Date    End_Date

1       01/01/2010    02/01/2010  
2       01/01/2010    04/01/2010  
3       03/01/2010    04/01/2010  
4       03/01/2010    04/01/2010

如果我在第一个(01/01)和第二个(02/01)之间看,我希望计数为2。如果我在寻找第3个到第4个,则期望计数为3。在整个日期范围内,那么我希望计数为4。有意义吗?

注意: 日期已转换为午夜,无需为此添加任何代码。此外,在整个问题中,日期均为dd / MM / yyyy格式。

目前,我有类似以下内容:

SELECT COUNT(*), Group_Field
FROM MY_Table
WHERE Start_Date < DATEADD(DAY, 1, @StartDate) AND End_Date > @EndDate
GROUP BY Group_Field

我曾经认为这是对的,但现在我不敢相信…

我以前有:

WITH Dates AS ( 
            SELECT [Date] = @StartDate
            UNION ALL SELECT [Date] = DATEADD(DAY, 1, [Date])
            FROM Dates WHERE [Date] < @EndDate
)

SELECT COUNT(*), Group_Field -- In this case it is [Date]
FROM MY_Table
CROSS APPLY Dates
WHERE Start_Date < DATEADD(DAY, 1, @StartDate) AND End_Date > [Date]
GROUP BY Group_Field

但是我不确定在这种情况下我是否正确使用了CROSS APPLY …

问题:

1)我是否在第二个示例中使用了交叉申请(以及与此相关的CTE)?
2)如果是,哪种逻辑是正确的?(我认为这是第二个)

/讨论 :)


问题答案:

解决方案最终是:

WHERE [Date] BETWEEN Start_Date AND DATEADD(Day, -1, End_Date)


 类似资料:
  • 我有一个以下JPQL查询 用于转换为以下SQL查询 过去一切都是魅力。但后来我不得不升级一些依赖项版本,以匹配其他模块的依赖项。这时这个查询中断了,现在它被转换成了这个SQL。 正如你所料,这是行不通的。我得到以下错误 我试图降低多个依赖项的级别,包括hibernate和spring数据jpa相关的依赖项,但没有起到任何作用。如果有人能帮我解决这个问题,我将不胜感激。 非常感谢。

  • 本文向大家介绍SQL 交叉应用和外部应用基础,包括了SQL 交叉应用和外部应用基础的使用技巧和注意事项,需要的朋友参考一下 示例 在正确的表达式中使用表值函数时,将使用Apply。 创建一个Department表来保存有关部门的信息。然后创建一个Employee表,其中包含有关雇员的信息。请注意,每个员工都属于一个部门,因此Employee表与Department表具有参照完整性。 第一个查询从D

  • 我正试图通过逻辑回归来解决给定数据集上的分类问题(这不是问题)。为了避免过度拟合,我试图通过交叉验证来实现它(问题是这样的):在完成程序时,我遗漏了一些东西。我在这里的目的是确定准确性。 但让我具体一点。这就是我所做的: 我把集合分成训练集和测试集 我定义了要使用的对数回归预测模型 我用cross_val_predict法(sklearn.cross_validation)做预测 最后,我测量了精

  • HDP-2.5.0.0,使用Ambari 2.4.0.1 配置单元表ReportSetting如下: 列'SerializedReportSetting'在源SQL Server db中是一种XML数据类型,但在Sqoop导入期间被转换为String,这是它在SQL Server中的外观: 在配置单元表中: 在SQL Server上正常工作的查询: 从ReportSetting限制1中选择xpat

  • 问题内容: 创建了两个临时表,然后将它们加载…这是架构。 (不幸的是,架构和设计是我无法更改的,两个临时表都是从平面文件加载的。如果需要,我可以引入并加载新的临时表)。 一点背景-#SH标题表将人员时间表保存为“ Start_minute”,并以分钟为单位“ schedule_length”。例如,如果开始时间和计划时间均为480,则将其表示为8am(8am = 480th分钟),直到4pm(48

  • 我正在尝试使用Leetcode中的递归来解决路径和问题。我不擅长用递归解决问题。我看到了一些其他的解决方案,但我试图自己实现一个。我不明白我在我的方法中做错了什么。如果有人帮助我理解我做错了什么,我将非常感谢你的帮助。提前谢谢。 问题陈述:给定二叉树的根和整数targetSum,如果树有根到叶的路径,则返回true,这样沿路径的所有值相加等于targetSum。 叶是没有子节点的节点。 我的方法: