[英]how to use a possible case statement
我正在學習 SQL 並且對我的構建有疑問。 這是我建立的:
SELECT
[System],
[CPU%],
[Boot and Login Time(Minutes)],
[System Uptime(s)],
SUM([Boot and Login Time(Minutes)]) AS [Total Time Consumed By the System]
FROM
(
SELECT
T0.ID AS [System],
INT_CPU+DPC_CPU AS [CPU%],
T1.MAINPATH/60000 AS [Boot and Login Time(Minutes)],
T2.UPTIME_SEC AS [System Uptime(s)]
FROM TABLE1 AS T0
LEFT JOIN TABLE2 AS T1 ON T0.ID=T1.ID
LEFT JOIN TABLE3 AS T2 ON T0.ID=T2.ID
) AS T0
WHERE [CPU%] > 30 AND [Boot and Login Time(Minutes)] > 5
GROUP BY
[System],
[CPU%],
[Boot and Login Time(Minutes)],
[System Uptime(s)]
此代碼的完整結果取決於 WHERE 子句(WHERE [CPU%] > 30 AND [Boot and Login Time(Minutes)] > 5)。 但是,我希望結果有所不同。
我希望 SELECT 語句中這 3 個的結果基於 WHERE 子句:
[System],
[CPU%],
[Boot and Login Time(Minutes)]
SELECT 語句中的其他 2 個不應依賴於 where 子句。 這意味着無論滿足 WHERE 條件,它們都應該是這 2 個結果:
[System Uptime(s)],
SUM([Boot and Login Time(Minutes)]) AS [Total Time Consumed By the System]
如何編輯代碼。 我可以使用case語句嗎? 我試過了,結果很混亂。
另外,我們如何將 MIPS 轉換為 PERCENTAGE。 我有一列給了我 TOTALCPU MIPS 並希望在代碼中使用它,但以百分比的形式。 例如,我的 TOTAL CPU 列中有這些值:
1623453.66897
0
0
2148441.01573933
3048946.946314
我想將這些值轉換為百分比並使用它們。 我在互聯網上找不到太多信息。
感謝您的回復。
評論太長了。 您正在過濾兩列 - 這些相同的列用作GROUP BY
鍵。
這意味着WHERE
正在過濾最終結果集中的整行。 它不會改變SUM()
的值。
事實上,有這樣的邏輯是相當奇怪的:
SELECT . . .,
SUM([Boot and Login Time(Minutes)])
FROM . . .
GROUP BY . . ., SUM([Boot and Login Time(Minutes)]);
我不希望GROUP BY
中出現[Boot and Login Time(Minutes)]
。 如果您還要求和,為什么還要在不同的值上使用不同的行? 在極少數情況下,這就是您想要的。 如果是這樣,寫得更清楚:
[Boot and Login Time(Minutes)] * COUNT(*)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.