【问题标题】:How to count the numbers of rows within a certain days如何计算某天的行数
【发布时间】:2018-03-02 03:46:22
【问题描述】:

我想执行一个查询,按商店计算在 open_date 的 60 天内关闭日期的行数。

示例:表 A

Store  Open Date  Close Date
A      2017-01-01   2017-01-31
B      2017-02-02   Null
A      2017-01-02   2018-01-21

提前致谢。

【问题讨论】:

  • 你的主键是什么?
  • 您使用的是哪个数据库——MySQL 还是 Amazon Redshift?它们每个的语法都不同。
  • 亚马逊红移

标签: mysql sql amazon-redshift


【解决方案1】:

使用 datediff()

SELECT count(*) FROM [Table A] WHERE datediff(Close_date,Open_date) <= 60;

【讨论】:

    【解决方案2】:

    尝试以下查询:

    SELECT count(*) numberOfDays
    FROM TableA
    WHERE close_date>=CURRENT_DATE - INTERVAL 60 DAY;
    
    SELECT count(*) numberOfDays
    FROM TableA
    WHERE close_date>=CURRENT_DATE - INTERVAL '60' DAY;
    

    work on SQL Fiddle

    【讨论】:

    • 我的操作无效:在“60”或附近出现语法错误;
    • 尝试其中一个,除了它们都在 sql fiddle 上运行顺利。点击链接查看演示。
    • 你做了什么?我的答案是正确的,所以投票吧!
    【解决方案3】:
    select store, open_date, count(*)
    from tableA
    where close_date between date_sub(open_date, interval 60 DAY) and date_add(open_date, interval 60 DAY)
    group by store, open_date;
    

    这会起作用,但您的开始日期必须是当前日期或 open_date(这是您的问题)。鉴于每一行的 open_date 似乎不同,您的计数将是……有趣。

    另外,count 总是会返回一些东西,所以除非你使用 if 或 case 语句键入 0(零),否则它将返回 0 而不是 null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多