【问题标题】:How to construct a query to include historical data如何构造查询以包含历史数据
【发布时间】:2021-08-27 20:45:45
【问题描述】:

我是 SQL 新手,正在尝试通过做一些项目来学习。目前,我有一个以开始和结束日期作为参数的查询。查询是按品种类型和种族日期过滤的。我需要这样做,以便此查询的数据包括 race_date > 1/1/2020 的品种类型 1,2 和 3,并包括种族日期

样本数据:

race_date breed_type sales
12/30/2020 1 20
12/30/2020 2 10
12/30/2020 3 40
12/31/2020 3 10
12/31/2020 2 20
1/1/2021 1 25
1/1/2021 2 20
1/2/2021 1 10
1/2/2021 2 10
1/2/2021 3 20

我目前拥有的:

SELECT SUM(nvl(sales,0)) 销售额
从结果 t WHERE t.race_date BETWEEN '12/30/2020' 和 '01/02/2021' AND (1,2,3) 中的品种类型

但我希望此查询显示race_date 01/01/2021 的breed_type 3。

预期销售额应为:135

实际销量:185

提前感谢您的帮助。

【问题讨论】:

  • 请提供样本数据、所需结果和适当的数据库标签。
  • 请编辑您的问题并为您正在使用的 sql 类型添加一个标签,然后添加您的查询并解释您获得的结果与您期望获得的结果跨度>
  • 在 where 子句中使用两个子选择,并使用主键检查元组是否在两个集合之一中。所以:哪里 PRIMARY_KEY_COLUMN(S) in (subselect 1) 或 PRIMARY_KEY_COLUMN(S) in (subselect 2)。

标签: sql


【解决方案1】:

你的意思是?

SELECT SUM(sales)
FROM results
WHERE (breed_type in (1,2) AND race_date < '01/01/2021')
OR (breed_type in (3) AND race_date > '01/01/2021')

请注意,您的问题已将 01/01/2021 从两个拟合器中排除。我假设您希望其中之一成为 &lt;=&gt;=

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2012-11-25
    • 2012-04-29
    • 2017-05-11
    相关资源
    最近更新 更多