特定の条件(たとえば、特定の列の値が1のレコードのみ)に基づいてレコードをカウントする機能を必要とするGROUP BY
句でクエリを作成しています。Sql ServerのCOUNTIF集合関数と同等
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1)/COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
COUNTIF
と呼ばれるネイティブSQL関数が存在しないのでCOUNTIF()
ラインは明らかに失敗しますが、ここでの考え方は、MYCOLUMNの値「1」を持つすべての行の割合を決定することです。
MS SQL 2005環境でこれを正しく実装する方法について考えていますか?
SELECT SUM(CASE WHEN myColumn=1 THEN 1 ELSE 0 END)
FROM AD_CurrentView
注:
(私はMSのSQLについて質問しましたが、同じことをやっているSQLiteユーザのためのちょっとしたコメントがあります)SQLiteには 'ISNULL'がありません。代わりに' CASE WHEN myColumn IS NULL'を使うか、 'ifnull' (https://stackoverflow.com/a/799406/1861346) – Matt