簡體   English   中英

如何使用可能的案例陳述

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM