PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Isi tabel dengan data untuk tanggal yang hilang (postgresql, redshift)

Lihat ide di balik kueri:

select distinct on (domain, new_date) *
from (
    select new_date::date 
    from generate_series('2016-04-12', '2016-04-17', '1d'::interval) new_date
    ) s 
left join a_table t on date <= new_date
order by domain, new_date, date desc;

  new_date  |     domain      |    date    | visitors | hits  
------------+-----------------+------------+----------+-------
 2016-04-12 | www.domain1.com | 2016-04-12 |     1231 | 23423
 2016-04-13 | www.domain1.com | 2016-04-13 |     1374 | 26482
 2016-04-14 | www.domain1.com | 2016-04-13 |     1374 | 26482
 2016-04-15 | www.domain1.com | 2016-04-13 |     1374 | 26482
 2016-04-16 | www.domain1.com | 2016-04-13 |     1374 | 26482
 2016-04-17 | www.domain1.com | 2016-04-17 |     1262 | 21493
(6 rows)

Anda harus memilih tanggal mulai dan berakhir sesuai dengan kebutuhan Anda. Kueri mungkin cukup mahal (Anda menyebutkan tentang miliaran celah) jadi terapkan dengan hati-hati (uji pada subset data yang lebih kecil atau jalankan secara bertahap).

Dengan tidak adanya generate_series() Anda dapat membuat generator Anda sendiri. Berikut adalah contoh yang menarik . Tampilan dari artikel yang dikutip dapat digunakan sebagai ganti generate_series() . Misalnya, jika Anda memerlukan periode '2016-04-12' + 5 days :

select distinct on (domain, new_date) *
from (
    select '2016-04-12'::date+ n new_date
    from generator_16
    where n < 6
    ) s 
left join a_table t on date <= new_date
order by domain, new_date, date desc;

Anda akan mendapatkan hasil yang sama seperti pada contoh pertama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara bergabung dengan elemen array jsonb di Postgres?

  2. Instal icu4c versi 63 dengan Homebrew

  3. GitHub Actions:Cara terhubung ke Postgres di GithHub Actions

  4. Membuat file database.yml berfungsi di Rails di OSX

  5. PostgreSQL - sintaks DISTINCT ON dan GROUP BY