0
以下の表があります。すべての一意のIDを数え、役割が教師である数で除算したいと思います。SQL Serverのカウント数と条件の比較
表A
ID Userid Role
1 A Teacher
2 b Teacher
3 c Student
以下のような何か。 count(distinct id)/ count(distinct id)ロール=教師の場合
以下の表があります。すべての一意のIDを数え、役割が教師である数で除算したいと思います。SQL Serverのカウント数と条件の比較
表A
ID Userid Role
1 A Teacher
2 b Teacher
3 c Student
以下のような何か。 count(distinct id)/ count(distinct id)ロール=教師の場合
単純なCOUNT DISTINCTを集約CASE式で使用できます。結果が小数点を返すように浮動小数点数に変換しましたが、システムに適用する前にデータ型をチェックアウトする必要があります。サンプルデータ
CREATE TABLE #TestData (ID float, Userid nvarchar(1), Role nvarchar(7))
INSERT INTO #TestData
VALUES
(1,'A','Teacher')
,(2,'B','Teacher')
,(3,'C','Student')
クエリ
SELECT
COUNT(distinct td.ID) DistinctID
,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END) Teachers
,CONVERT(float,COUNT(distinct td.ID))/CONVERT(float,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END)) FinalField
FROM #TestData td
DistinctID Teachers FinalField
3 2 1.5
確かに結果のため
一時テーブルは、あなたがこれまでに何をしましたか?どういうことですか? –
異なるロールまたはすべてのロールを数えますか? –
クエリと結合によって作成されます。 TableA Aから別のA.id、a.userid、a.roleを選択します。どのアプローチをとるべきかはわかりません。したがって、表示する作業はありません。 – Toby