4

与えられたSQLテーブル

Transactions
  ID            INT
  COMPANY_ID    INT
  STATUS        INT

ここでSTATUS IN (0,1)、は無料のトランザクションを示し、請求可能なトランザクションを示します。請求可能なトランザクション、請求不可能なトランザクションの数、およびそれらの比率STATUS IN (2,3)ごとに、どのような単純な(私が望む)ANSI SQLステートメントが表示されますか?COMPANY_ID

特定のステートメントではないにしても、正しい方向の概念的な製品は問題ありません。私の最初の試みは、2つのステータスグループの句を使用してテーブルに自己結合するWHEREことですが、比率を計算できるように、それぞれの個別のカウントを表す列を取得する方法に固執しています。

これは概念的にはsummary -aggregated-dataと非常によく似ていますが、その質問をこの質問に拡張する方法がわかりません。

4

1 に答える 1

5

これが始まりです、これは正しい線に沿っていると思います...残っているのは比率を追加することだけです。

SELECT
    COMPANY_ID,
    NON_BILLABLE = SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END),
    BILLABLE = SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END)
FROM TRANSACTIONS
GROUP BY COMPANY_ID

編集:標準への準拠のため。

SELECT
    COMPANY_ID,
    SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END) AS NON_BILLABLE,
    SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END) AS BILLABLE
FROM TRANSACTIONS
GROUP BY COMPANY_ID
于 2009-11-24T00:24:31.433 に答える