PostgreSQL从特殊日期开始计数

哈哈科米施

我有以下代码,

SELECT      
    years_month_count.day_date,
    years_month_count.year_date,
    years_month_count.month_date,
    years_month_count.no_of_customers_day,
    sum(years_month_count.no_of_customers_day) OVER (PARTITION BY year_date ORDER BY day_date) AS no_of_customers_ytd
FROM (
    SELECT 
        DATE(date) as day_date,
        DATE_PART('year',date) as year_date,
        DATE_PART('month',date) as month_date,
        count(prepare_first_buyer.person_id) as no_of_customers_day
    FROM (
        SELECT 
            DATE(bestelldatum),
            person_id,
            ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY person_id)
        FROM ani.bestellung
    ) prepare_first_buyer
    WHERE row_number=1
    GROUP BY DATE(date), DATE_PART('year',date),DATE_PART('month',date)
    ORDER BY DATE(date), DATE_PART('year',date),DATE_PART('month',date)
) years_month_count

输出看起来像这样:

day_date year_date month_date no_of_customers_day no_of_Customers_ytd
2017-04-04 2017年 4 6 6
2017-04-05 2017年 4 4 10
... ... ... ... ...
... ... ... ... ...

等等。

在每个新年(1月1日)开始时,no_of_customers_ytd都将设置为零。但是我需要在特殊的日期将其设置为零,例如每年1月1日。因此,我每年需要从6月1日到3月30日之间的所有款项。

谢谢。

男装

分步演示:db <> fiddle

SELECT
    *,
    SUM(value) OVER (PARTITION BY                             -- 4
        date_part('year',                                     -- 3
            the_date - interval '5 months'                    -- 2
        )     
    )
FROM t
WHERE date_part('month', the_date)::int NOT BETWEEN 4 AND 5   -- 1
  1. 过滤所有不需要的日期。在您的示例中,所有日期都包含月份45
  2. 将日期范围从开始日期更改为年初。在您的示例中,您必须将:year-06-01移至year-01-01,因此您需要减去5 months由于您的日期范围永远不会超过一年,因此所有相关数据现在都具有同一年份,这是一个很好的组准则
  3. 提取year零件以将其用作组/分区标准
  4. 根据此标准进行计算

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从PostgreSQL的订购日期开始

翻转计数器的特定开始日期

使FlipClock.js从设置的日期开始计数

PostgreSQL,从日期间隔开始的天数

PostgreSQL SELECT和按日期计数

从日期开始到当前月份/年份的SQL计数数据

开始活动时如何更新日期计数器

从加入日期开始每天进行熊猫计数活动

PostgreSQL的一般开始和结束日期(财务年)

如何从PostgreSQL中的星期数获取星期开始日期?

如何在R中以开始日期结束日期间隔计数记录?

根据开始日期和结束日期对记录进行分组,并使用 Rails 计数

根据开始日期和结束日期滚动分组唯一性计数

根据开始/结束选择指定日期之前和之后的连续日期计数

根据Postgresql中同类群组的初始日期进行计数

postgresql groupby 计数,日期介于两者之间

选择累积(?)计数,其中计数取决于Postgresql中的两个日期列

使用postgreSQL中的日期(从日期开始),将所有员工经验增加1。

PostgreSQL:计算开始日期和结束日期的条件适合生成的时间序列的行

计算日期之间的差异并从该结果开始计时器计数

Laravel - 从当前日期开始选择两个月的目的地计数

特殊条件的记录计数

特殊分组计数 IF - Excel

SQLite 3特殊计数

PHP计数从0开始

计数从linq开始

设定开始计数的编号

PostgreSQL:如果表中没有日期请求,然后为0,如何按日期计数请求?

给定日期范围(日历)内具有开始和关闭日期的活动工单的每日计数