簡體   English   中英

計算MySQL查詢中的百分比

[英]Calculate Percentage in MySQL Query

我正在嘗試生成一個MySQL表,其中包含一列,該列顯示的是與具有相同分組的另一個計數相對應的百分比。 總的來說,我想將以下兩個查詢合並為一個查詢,而不是顯示一個計數,而是顯示一個百分比。 這是兩個查詢:

SELECT machine, COUNT(machine)
FROM rtcdb.session
WHERE project = "CSC032"
  AND (qc_gsr = 'green'
    AND qc_hr = 'green'
    AND qc_acz = 'green'
    AND qc_bre = 'green'
  )
GROUP BY machine;

SELECT machine, COUNT(machine)
FROM rtcdb.session
WHERE project = "CSC032"
GROUP BY machine;

在某些情況下,第一個查詢將產生比第二個查詢更少的行-當某些機器根本沒有任何成功(綠色)時,就會發生這種情況。 我如何將這些查詢合並為一個查詢,以計算成功的所有計算機所占的百分比(本質上是成功率),並將其顯示在自己的列中?

像這樣

SELECT
  machine
, COUNT(DISTINCT machine) AS "nb"
, COUNT(DISTINCT
    IF(qc_gsr = "green"
   AND qc_hr = "green"
   AND qc_acz = "green"
   AND qc_bre = "green"
    ), machine, NULL)
  ) AS "green_nb"
, COUNT(DISTINCT
    IF(qc_gsr = "green"
   AND qc_hr = "green"
   AND qc_acz = "green"
   AND qc_bre = "green"
    ), machine, NULL)
  ) / COUNT(machine) * 100 AS "%"
FROM rtcdb.session
WHERE project = "CSC032"
GROUP BY machine
;

為了使您了解該技術,另一種方法是將現有查詢用作子查詢,例如以下內容(未經測試):

select machine, total.count, green.count, green.count*100/total.count as percentage
  from (<subquery1>) green, (<subquery2>) total right join by green.machine=total.machine`

您需要使用別名count(machine)count子查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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