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

Cara Mengisi Tanggal yang Hilang di PostgreSQL menggunakan generate_series

Seringkali, kita perlu mengisi tanggal yang hilang di PostgreSQL dengan mengisi baris yang hilang untuk nilai tanggal tersebut. Berikut cara mengisi tanggal yang hilang di PostgreSQL menggunakan fungsi generate_series.

Cara Mengisi Tanggal yang Hilang di PostgreSQL menggunakan generate_series

Berikut adalah langkah-langkah untuk mengisi tanggal yang hilang di PostgreSQL. Kami akan menggunakan generate_series di PostgreSQL untuk mengisi nilai yang hilang.

Katakanlah Anda memiliki tabel berikut penjualan(tanggal_pesanan,penjualan)

postgresql=# create table sales(order_date date,sale int);

postgresql=# insert into sales(order_date,sale) values('2020-04-01',212),
     ('2020-04-04',220),
     ('2020-04-05',120),
     ('2020-04-07',200),
     ('2020-04-08',222),
     ('2020-04-10',312),
     ('2020-04-11',225),
     ('2020-04-12',212);

postgresql=# select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-04-01 |  212 |
| 2020-04-04 |  220 |
| 2020-04-05 |  120 |
| 2020-04-07 |  200 |
| 2020-04-08 |  222 |
| 2020-04-10 |  312 |
| 2020-04-11 |  225 |
| 2020-04-12 |  212 |
+------------+------+

Bonus Baca :Cara Menghitung Median di PostgreSQL

Seperti yang Anda lihat pada tabel di atas, ada nilai tanggal yang hilang di dalamnya seperti 2, 3 April, dll.

Jika kita mencoba untuk memplot data ini pada grafik, itu akan terlihat seperti

Grafik seperti itu bisa menyesatkan karena tidak menunjukkan celah kolom untuk tanggal yang hilang.

Bonus Baca :Cara Menghitung Moving Average di PostgreSQL

Untuk mengisi data yang hilang di PostgreSQL, kita perlu membuat tabel seri tanggal 'pembantu' yang berisi semua tanggal antara tanggal minimum dan maksimum di tabel kita, termasuk nilai tanggal yang hilang sebagai baris. Kami akan bergabung dengan meja pembantu ini dengan penjualan kami tabel.

Kami akan menggunakan generate_series di PostgreSQL untuk menghasilkan tabel seri tanggal. generate_series fungsi secara otomatis menghasilkan rangkaian angka &tanggal yang berkelanjutan, jika Anda memberikan nilai minimum dan maksimum untuk rangkaian Anda.

Berikut adalah contoh, di mana kami memberi tahu generate_series untuk menghasilkan seri tanggal antara tanggal minimum dan maksimum di tabel kami, termasuk nilai tanggal yang hilang sebagai baris.

postgres=# SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
           FROM   sales;

 order_date
------------
 2020-04-01
 2020-04-02
 2020-04-03
 2020-04-04
 2020-04-05
 2020-04-06
 2020-04-07
 2020-04-08
 2020-04-09
 2020-04-10
 2020-04-11
 2020-04-12

Bonus Baca :Cara Mengimpor File CSV di PostgreSQL

Selanjutnya, kami melakukan gabungan KIRI dari tabel pembantu dengan penjualan untuk mengisi tanggal yang hilang di PostgreSQL.

postgres=# SELECT x.order_date, t.sale
           FROM (
              SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
              FROM   sales
               ) x
           LEFT   JOIN sales t USING (order_date)
           ORDER  BY x.order_date;

 order_date | sale
------------+------
 2020-04-01 |  212
 2020-04-02 |
 2020-04-03 |
 2020-04-04 |  220
 2020-04-05 |  120
 2020-04-06 |
 2020-04-07 |  200
 2020-04-08 |  222
 2020-04-09 |
 2020-04-10 |  312
 2020-04-11 |  225
 2020-04-12 |  212

Setelah Anda mengisi tanggal yang hilang di PostgreSQL, Anda dapat menggunakan alat pelaporan untuk memplot data ini pada diagram batang atau dasbor dan membagikannya dengan tim Anda. Berikut adalah contoh diagram batang yang menunjukkan penjualan harian, dibuat menggunakan Ubiq.

Lihat perbedaannya dalam 2 grafik!

Jika Anda ingin membuat grafik, dasbor &laporan dari database PostgreSQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.

  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 menggunakan % operator dari ekstensi pg_trgm?

  2. Cara menentukan tab di front-end COPY postgres

  3. Segarkan tampilan terwujud secara otomatis menggunakan aturan atau beri tahu

  4. Apakah lebih baik menggunakan beberapa database dengan satu skema masing-masing, atau satu database dengan beberapa skema?

  5. Warisan PostgreSQL dengan JPA, Hibernate