🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

1175閲覧

PostgreSQL:複数の売上データをひと月の日付全てに繋げたい

Tsukumo99

総合スコア4

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/12/13 04:24

編集2019/12/13 04:55

以下のようなデータが入ったテーブルで売上がない日は販売日と商品を入れて売上数量は0でSELECTしたいのですが方法がわかりません。
generate_seriesを使用して日付の一覧を取得できることはわかったのですが商品ごとに日付を分けるJOIN方法がわからず困っています。ご教授いただけないでしょうか。

■データ
販売日,商品,売上数量
2019-12-01,りんご,9
2019-12-04,りんご,5
2019-12-07,りんご,4
2019-12-04,みかん,3
2019-12-01,ばなな,8
2019-12-03,ばなな,1
2019-12-05,ばなな,2
2019-12-07,ばなな,6

■欲しい結果
販売日,商品,売上数量
2019-12-01,りんご,9
2019-12-02,りんご,0
2019-12-03,りんご,0
2019-12-04,りんご,5
2019-12-05,りんご,0
2019-12-06,りんご,0
2019-12-07,りんご,4
2019-12-08,りんご,0
2019-12-09,りんご,0
2019-12-10,りんご,0
2019-12-01,みかん,0
2019-12-02,みかん,0
2019-12-03,みかん,0
2019-12-04,みかん,3
2019-12-05,みかん,0
2019-12-06,みかん,0
2019-12-07,みかん,0
2019-12-08,みかん,0
2019-12-09,みかん,0
2019-12-10,みかん,0
2019-12-01,ばなな,8
2019-12-02,ばなな,0
2019-12-03,ばなな,1
2019-12-04,ばなな,0
2019-12-05,ばなな,2
2019-12-06,ばなな,0
2019-12-07,ばなな,6
2019-12-08,ばなな,0
2019-12-09,ばなな,0
2019-12-10,ばなな,0

■定義
create table test(urdate date,shohin character varying(10),suryo numeric(10,0));
insert into test values('2019-12-01','りんご',9);
insert into test values('2019-12-04','りんご',5);
insert into test values('2019-12-07','りんご',4);
insert into test values('2019-12-04','みかん',3);
insert into test values('2019-12-01','ばなな',8);
insert into test values('2019-12-03','ばなな',1);
insert into test values('2019-12-05','ばなな',2);
insert into test values('2019-12-07','ばなな',6);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

generate_seriesで10日間を作成して✖️商品種類、さらに本体とLEFT JOINしました。

sql

1create temp table test(urdate date,shohin character varying(10),suryo numeric(10,0)); 2insert into test values('2019-12-01','りんご',9); 3insert into test values('2019-12-04','りんご',5); 4insert into test values('2019-12-07','りんご',4); 5insert into test values('2019-12-04','みかん',3); 6insert into test values('2019-12-01','ばなな',8); 7insert into test values('2019-12-03','ばなな',1); 8insert into test values('2019-12-05','ばなな',2); 9insert into test values('2019-12-07','ばなな',6); 10 11select t3.urdate,t3.shohin,coalesce(t4.suryo,t3.suryo) from 12(select generate_series urdate,shohin,0 suryo from 13(select * from generate_series('2019-12-01'::date,'2019-12-10','1 day')) t1 14,(select distinct shohin from test) t2) t3 15left join test t4 ON t3.urdate=t4.urdate and t3.shohin=t4.shohin 16order by 2 desc,1;

投稿2020/01/01 16:13

amura

総合スコア333

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問