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)當角色=教師
您可以使用帶有聚合CASE表達式的簡單COUNT DISTINCT。我已經轉換爲浮點數,以便結果返回小數點,但您希望在應用到系統之前檢出數據類型。對樣本數據
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