我有下表。使用sqlite資料庫
| 物品 | 結果 |
|---|---|
| 一個 | 經過 |
| 乙 | 經過 |
| 一個 | 失敗 |
| 乙 | 失敗 |
我想使用一些查詢來實作上表如下。
| 物品 | 全部的 | 接受 | 拒絕 |
|---|---|---|---|
| 一個 | 2 | 1(50%) | 1(50%) |
| 乙 | 2 | 1(50%) | 1(50%) |
我應該如何構造這個查詢?
uj5u.com熱心網友回復:
PIVOT()如果您的 DBMS 支持,您可以嘗試。然后根據DMBS使用CONCAT或||運營商。
詢問:
SELECT
item,
total,
SUM(Pass)||'('|| CAST((SUM(Pass)*1.0/total*1.0)*100.0 AS DECIMAL)||'%)' AS Accept,
SUM(Fail)||'('|| CAST((SUM(Fail)*1.0/total*1.0)*100.0 AS DECIMAL)||'%)' AS Reject
FROM
(
SELECT
Item,
result,
COUNT(result) OVER(PARTITION BY item ORDER BY result ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS total,
CASE
WHEN Result = 'Pass' then 1
ELSE 0
END AS Pass,
CASE
WHEN Result = 'Fail' then 1
ELSE 0
END AS Fail
FROM t
) AS j
GROUP BY item, total
查詢說明:
- 由于
SQLITE不處理PIVOT,我們使用CASE陳述句手動創建標志通過和失敗 - 計算
total,COUNT在這里用作分析函式。它基本上是計算計數并將其放在所有行中的快捷方式 - 然后在外部查詢中,我們正在計算 %s 并
||用作連接運算子將結果與總和和它的 % 連接起來
見db<>fiddle 中的演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/385857.html
