2016-05-26 5 views
0

この表を使用してチケットをPostgreSQLに保存します。ステータスごとにすべての行を数えます

CREATE TABLE TICKET(
ID INTEGER NOT NULL, 
TITLE TEXT, 
STATUS INTEGER, 
LAST_UPDATED DATE, 
CREATED DATE 
) 
; 

「ステータス」列を使用して異なるステータス(1,2,3,4)を設定します。 1つのSQLクエリでステータスごとにすべてのチケットを数える方法は?

私は数字の単純な配列のように例えば最終結果を見たい:あなたはまた、任意のチケットなしの状態を表示する必要がある場合

34, 44, 64, 23 
+0

GROUP BYを使用してcount(*)を使用します。 – jarlh

答えて

3
Select status, count(*) 
from Ticket 
group by status 

。次に、私は以下の手順に従います。 我々はチケットテーブルに

レッツが欠落している状況を知ることができない、同じテーブルがクエリがなります

CREATE TABLE _STATUS(
    STATUS INTEGER, 
STATUS_NAME TEXT 
) 
; 

CREATE TABLE TICKET(
ID INTEGER NOT NULL, 
TITLE TEXT, 
STATUS INTEGER, 
LAST_UPDATED DATE, 
CREATED DATE 
) 
; 

以下のように状態であると言うから店舗状況details.Withにテーブルがあるでしょう

select s.status,COUNT(t.*) 
from _status t left join ticket t 
on s.status = t.status 
group by s.status 
+0

はい、動作しますが、ステータス4のチケットがない場合は空の結果が得られます。おそらく私はJavaでNPEを取得します。ステータス4のティケットがなくても、どのようにステータスを取得できますか? –

+0

あなたは別のステータステーブルを持っていますか? 1,2,3,4は固定されていますか? – Sachu

+0

これは1つのテーブルの列statusに固定されています。 –

1
select status, count(*) from ticket group by status; 
+0

この結果を取得するクエリのサンプルを表示できますか? '32 21 32 12'? –

+0

わかっていれば分かりません – Elyasin

+0

更新された投稿をご覧ください。 –

2

選択状態、状況によってチケットグループからCOUNT(*)

-1

あなたは1行、のようなものの値たい場合:

SELECT 
    COUNT(CASE WHEN status=1 THEN 1 ELSE NULL END) as '1', 
    COUNT(CASE WHEN status=2 THEN 1 ELSE NULL END) as '2', 
    COUNT(CASE WHEN status=3 THEN 1 ELSE NULL END) as '3', 
    COUNT(CASE WHEN status=4 THEN 1 ELSE NULL END) as '4' 
FROM TICKET; 

をしかし、その後、あなたが任意の新しいステータスコードで更新あなたのSQLを維持する必要があります。

+0

これは答えではありません。質問は「どのようにすべてのチケットをステータスで数えることができるか」ですが、「1つの行で選択してください」 –

+0

これはまさに何が求められたかです。 OPは彼の例で示されているように、1行に結果を求めました。彼はこれをさらに強調し、別の解決策へのコメントで強調しました。「結果が得られれば、Javaオブジェクトを作成する方がずっとよかったことが分かります。32 21 32 12」。この結果はどうですか? "そして、もう一度、もう一度、「この結果を得るクエリの例を教えてもらえますか?」32 21 32 12どうぞ。 – ChrisH

関連する問題