🎄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に必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

TreasureData

TreasureDataは、クラウド型データマネージメントサービスです。アプケーションログやセンサーデータといった時系列データの収集や保管、分析を容易に行うことが可能です。分析エンジンとしてPrestoの利用もでき、SQLで収集データをインタラクティブに分析できます。

Q&A

2回答

4140閲覧

「更新日が昨日のレコード件数」を日次で集計したいです(PostgreSQL)

Okuyuki

総合スコア9

PostgreSQL

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

SQL

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

TreasureData

TreasureDataは、クラウド型データマネージメントサービスです。アプケーションログやセンサーデータといった時系列データの収集や保管、分析を容易に行うことが可能です。分析エンジンとしてPrestoの利用もでき、SQLで収集データをインタラクティブに分析できます。

0グッド

0クリップ

投稿2019/11/13 10:26

編集2019/11/13 14:29

日次で、「更新日が昨日のレコードが何件あるか」を確認したいです!

TBL、SQLは以下のイメージなので、手動で[昨日]を書き換えれば実行出来ますが、
自動で昨日の日付を設定したいです

sampleTBL

idXXX更新日
1A2019-11-13 00:00:00.000
2B2019-11-12 10:10:10.000
3C2019-11-13 11:11:11.000
4D2019-11-05 22:22:22.000
select count(*) from sample where sample.[更新日] >= '昨日の日付' and sample.[更新日] < '今日' ;

2019-11-14に流した場合はid=1,3が対象となり、結果は2件となる想定です
'昨日の日付'と'今日の日付'に何かしらの関数を用いて、自動で日時を入れたいのですが、方法が分かりません

こちら↓で確認したのですが、where句ではなくselectの後に記載されており、どう参考にすべきか分かりませんでした

SELECT

TO_CHAR(TO_DATE('20170123', 'YYYYMMDD') + 1, 'YYYYMMDD')

SELECT

CURRENT_DATE

何卒、よろしくお願いいたします!
※週次や月次で「更新日をgroup_by」だと、同一レコードが複数日に更新されたケースに対応出来ないため、日次で集計する必要があります

提供するデータベース - Plazma:列指向ストレージ - Data Tanks:Postgres 準拠データマート(列指向 cstore 対応) 提供するクエリエンジン - Presto - Hive - Hivemall(機械学習ライブラリ)

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/11/13 10:27

SQLとは? MySQL ? PostgreSQL ? SQLServer ? Oracle ?
Okuyuki

2019/11/13 10:30 編集

以下と記載されていました ``` 提供するデータベース - Plazma:列指向ストレージ - Data Tanks:Postgres 準拠データマート(列指向 cstore 対応) 提供するクエリエンジン - Presto - Hive - Hivemall(機械学習ライブラリ) ```
退会済みユーザー

退会済みユーザー

2019/11/13 10:33

質問文に追記してください。 PostgreSQLは専門外なので、詳しい方に任せます。z
Okuyuki

2019/11/13 11:18

かしこまりました! ありがとうございます!
amura

2020/01/04 14:44

日付でも抽出できると思います。 select count(*) from sample where 更新日::date = current_date - 1;
guest

回答2

0

where sample.[更新日] >= '昨日の日付';

= は昨日ときょうを含みます。質問と矛盾します。

sample.[更新日] のデータ型は?きちんとCREATE TABLE を質問に追記できた方が適切なコメントが付き易いです。

CURRENT_DATE できのう、きょうL,明日を取得 を参考に。

投稿2019/11/13 13:22

Orlofsky

総合スコア16417

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

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

Okuyuki

2019/11/13 14:18

毎日0時に回す想定だったため上記書き方をしていましたが、雑なので書き直します! [更新日]のデータは、'2019-11-13 00:00:00.000'の様に文字列型でした
Orlofsky

2019/11/14 10:45

とりあえず、 select count(*) from sample where sample.[更新日] >= TO_CHAR(CURRENT_DATE - 1, 'YYYY-MM-DD') and sample.[更新日] < TO_CHAR(CURRENT_DATE , 'YYYY-MM-DD') で試しては?
guest

0

提供するデータベース

  • Plazma:列指向ストレージ
  • Data Tanks:Postgres 準拠データマート(列指向 cstore 対応)

このあたりの情報をみるにTreasure Data(TD)を利用されてるようですのでTDのUDFへの依存はありますがTD_INTERVAL()を使って下のように書くとシンプルなクエリになるかと思います。

select count(*) from sample where TD_INTERVAL(<更新日カラム>, '-1d') ;

Supported Presto and TD Functions – Arm Treasure Data

投稿2019/11/15 17:31

yuokada

総合スコア550

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問