繁体   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