IDと状態が1つのテーブルにある以下のシナリオを解決する最善の方法を知りたかったのです。 Acceptedは終了状態です。特定のIDに対して状態が受け入れられると、それ以上の更新はそのIDに対して発生しません。例えばIDの選択データをカウントする
、これは表が今
ID | State
-----+----------------
12 | Not Accepted
12 | Not Accepted
12 | Accepted
45 | Not Accepted
67 | Not Accepted
をどのように見えるかですが、私は受け入れられると受け付けられないバケットに個別のIDをカウントします。
id
が受け入れられた状態に達した場合は、それはaccepted
バケットでカウントする必要があります(前述の「受け入れられていない」という状態は無視してください)。 id = 12の例では、受け入れられていない2つの状態と1つの受け入れ可能な状態があるため、accepted
のカウントだけをインクリメントする必要があります。私が試した
期待される結果
Accepted | Not Accepted
---------+--------------
1 | 2
は、このSQL文ですが、それは私が取得
SELECT
SUM(CASE WHEN state = 'Accepted' THEN 1 ELSE 0 END) AS accepted,
SUM(CASE WHEN state != 'Accepted' THEN 1 ELSE 0 END) AS nonaccepted
FROM
SAMPLE;
結果、正しい結果が得られていません:
Accepted | Not Accepted
---------+-------------
1 | 4
1)あなたが何を求めているかは完全にはっきりしていません。あなた自身がこれをやろうとしたSQLを投稿し、そのクエリから得た結果を含め、問題をより明確に述べてください。 2)あなたがそれを作っている間、あなたが求めている問題や質問を述べるようにあなたのタイトルを改善してください。冗長性のあるタグ情報(SQLとOracle)を削除すると、* Basic *が残ってしまいます。あなたのタイトルには、あなたが持っている問題や質問していることを明確に述べておくべきであり、将来の読者が検索結果のセットに見ても意味があるはずです。[ask]を参照してください。 –
あなたはチャンピオン、Vikです!あなたの投稿を編集して正しくフォーマットしました。フォーマットを削除するためにもう一度編集したことがあります。あなたの上で良い! – mathguy
ごめんなさい@mathguy、あなたの書式を削除するつもりはありませんでした。私はすでに編集モードになっていて、それをもっと賢明にしています。 –