多くの場合、PostgreSQLで欠落している日付を、それらの日付値の欠落している行を埋めることによって埋める必要があります。 generate_series関数を使用してPostgreSQLで欠落している日付を入力する方法は次のとおりです。
generate_seriesを使用してPostgreSQLで欠落している日付を埋める方法
PostgreSQLで不足している日付を埋める手順は次のとおりです。 PostgreSQLでgenerate_seriesを使用して、不足している値を埋めます。
次のテーブルがあるとしますsales(order_date、sale)
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 | +------------+------+
ボーナスリード:PostgreSQLで中央値を計算する方法
上の表からわかるように、4月2日、3日など、日付の値が欠落しています。
このデータをグラフにプロットしようとすると、次のようになります
このようなグラフは、欠落している日付の列のギャップを示していないため、誤解を招く可能性があります。
ボーナスリード:PostgreSQLで移動平均を計算する方法
PostgreSQLで欠落しているデータを埋めるには、行として欠落している日付値を含め、テーブル内の最小日付と最大日付の間のすべての日付を含む「ヘルパー」日付系列テーブルを作成する必要があります。このヘルパーテーブルにセールスを追加します テーブル。
PostgreSQLでgenerate_seriesを使用して、日付系列テーブルを生成します。 generate_series 系列の最小値と最大値を指定すると、関数は連続する一連の数値と日付を自動的に生成します。
これが例です。ここでは、generate_seriesに、テーブル内の最小日付と最大日付の間の日付系列を生成するように指示しています。これには、行として欠落している日付値も含まれます。
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
ボーナスリード:PostgreSQLでCSVファイルをインポートする方法
次に、 salesを使用してヘルパーテーブルの左結合を実行します 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
PostgreSQLで不足している日付を入力したら、レポートツールを使用して、このデータを棒グラフまたはダッシュボードにプロットし、チームと共有できます。これは、Ubiqを使用して作成された1日の売上を示す棒グラフの例です。
2つのグラフで違いを確認してください!
PostgreSQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。