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.