質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
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

解決済

4回答

5857閲覧

postgreSQLである項目の件数を取得するSQLを作成したい

javabigineer

総合スコア87

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クリップ

投稿2016/08/04 02:06

以下の列からstatusが'NG'となっている件数を店舗単位で確認したいです。
《テーブル名》
log
《列》
・store (店舗名)
・username(利用者名)
・status(状態)

<実現したい表示結果>
store status
A店 10
B店 5
C店 3
D店 6

今はこんなSQLくらいしか書けていないです。countとか使うのかな?
SQL得意な方アイデアください。。お願いします。

select shop,username,status from log where import_date >= '2016-08-01' AND import_date <= '2016-08-04'

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

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

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

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

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

guest

回答4

0

回答は出てるので蛇足だけ。

SQLをば書く上での簡単な考え方です、ご参考までに。

  • 〜単位、〜ごとに××したい

集計が必要なので**GROUP BY 〜**とする

  • 〜が○○に該当するものを抜き出したい

抽出条件なのでWHERE 〜 = ○○とする(WHERE以外での書き方もあるけど割愛)

  • 別テーブルAに保存された〜IDからマスタBに登録された〜名などを取得したい

結合条件なので、JOIN テーブル名 ONの後にA.〜ID = B.〜IDなどの条件を書く(WHERE句でも書くことは可能)

  • 〜ごとに××した結果が〇〇であるものを取得したい

集計した結果に対する条件なので、
HAVING ×× = ○○とする(××は集約した値で、COUNT(店舗名)などを指します)

こんな感じで整理すると良いと思います。

投稿2016/08/04 03:40

Panzer_vor

総合スコア1636

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

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

0

一般的なSQLで書くとこんな感じです

SQL

1SELECT store,COUNT(*) as count 2FRON log 3WHERE 1 4AND import_date BETWEEN '2016-08-01' AND '2016-08-04' 5AND status='NG' 6GROUP BY store;

投稿2016/08/04 03:07

yambejp

総合スコア114583

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

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

0

上の方のを参考に書かせていただきました。

sql

1select shop,count(status) status 2from log 3where import_date::date >= '2016-08-01' 4 AND import_date::date <= '2016-08-04' 5 AND status = 'NG' 6group by 1 order by 1

投稿2016/08/04 03:07

編集2016/08/04 03:13
A.Ichi

総合スコア4070

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

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

0

ベストアンサー

statusがNGである件数を取得するので
WHERE句にstatus = 'NG'を入れましょう
店舗ごとに集計するのでGROUP BYを使いましょう
あとは件数を数えるので集約関数COUNT()を使いましょう

この辺がわかればできるはずです
がんばってください

投稿2016/08/04 02:19

kutsulog

総合スコア985

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

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

javabigineer

2016/08/04 06:23

ありがとうございます。できました。 最初にアンサーいただいたのでベストアンサーにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問