sql >> Database >  >> RDS >> PostgreSQL

Weken tussen twee datums

Vensterfuncties zijn je vriend:

SELECT week_num,
       min(d) AS start_date,
       max(d) AS end_date
FROM (SELECT d,
             count(*) FILTER (WHERE new_week) OVER (ORDER BY d) AS week_num
      FROM (SELECT DATE '2018-09-05' + i AS d,
                   extract(dow FROM DATE '2018-09-05'
                                    + lag(i) OVER (ORDER BY i)
                          ) = 1 AS new_week
            FROM generate_series(0, DATE '2018-09-27' - DATE '2018-09-05') AS i
           ) AS week_days
     ) AS weeks
GROUP BY week_num
ORDER BY week_num;

 week_num | start_date |  end_date  
----------+------------+------------
        0 | 2018-09-05 | 2018-09-09
        1 | 2018-09-10 | 2018-09-16
        2 | 2018-09-17 | 2018-09-23
        3 | 2018-09-24 | 2018-09-27
(4 rows)


  1. Hoe een rij zonder waarden invoegen, zodat alle kolommen hun standaardwaarde aannemen?

  2. WAMP Server V 2.5-pictogram is oranje, reageert niet en geen menu

  3. Geen gegevens gevonden of er is een te veel uitzonderingsfout opgetreden tijdens het invoegen van bulkrecords

  4. jdbcTemplate is null en genereert een null-aanwijzeruitzondering