繁体   English   中英

MySQL查询计数的不同和百分比

[英]mySQL Query Count Distinct and Percentage

我在创建查询时会遇到麻烦,该查询将报告按区域内区域分组的用户的培训完成情况。 对于一个培训课程,报告需要针对每个地区显示

  • 分配课程的用户数
  • 完成课程的用户数
  • 用户完成课程的百分比

输出报告应该看起来像这样(没有句点):

区.........分配.......完成....%

阿肯色.......... 20 .............. 15 ............... 75%

伊利诺伊............... 80 .............. 80 ............... 100%

爱荷华................. 10 ............... 8 ............... ..80%

密歇根.......... 30 .............. 20 ................ 66%

这是我尝试使用的SQL查询

Select  mytable.district as District,

(Select Count(Distinct mytable.user_id)
     From mytable
     Where mytable.district = District AND
     mytable.training_title = 'My Course') As 'Assigned',

(Select Count(Distinct mytable.user_id) 
     From mytable
     Where mytable.training_status = "Completed" AND
        mytable.district = District AND
        mytable.training_title = 'My Course') as 'Completed',

Concat(Round(100 * (Select Count(Distinct mytable.user_id) 
     From mytable
     Where mytable.training_status = "Completed" AND
     mytable.district = District AND
     mytable.training_title = 'My Course') / (Select Count(Distinct mytable.user_id)
     From mytable
     Where 
        mytable.district = District AND
        mytable.training_title = 'My Course'),0 ),"%") as '%'   

From  mytable  
Where mytable.region = 'Midwest'
Group by District

这样根本行不通。 但是,如果我用WHERE子句中的“ District”替换了一个地区值(例如阿肯色州),则可以获取该地区的正确值。 但是,我需要找到每个区域的所有地区并计算地区的值。 这只是我要为其创建查询的区域之一。

两个关键问题:

  • 所有数据都存在于数据库的一个表中。 我已经合并并从另一个数据库导入了它。
  • 数据包含重复项,因此我必须使用Distinct从结果中消除重复项。

建议? 提前感谢你的帮助!!!

据我所知,您可以根据需要和GROUP BY地区进行汇总。 子查询将处理重复的行。

SELECT 
  district,
  COUNT(*) Assigned,
  COUNT(CASE WHEN training_status='Completed' THEN 1 END) Completed,
  CONCAT(COUNT(CASE WHEN training_status='Completed' THEN 1 END) /
  COUNT(*) * 100, '%') `%`
FROM (
  SELECT DISTINCT * FROM mytable  
  WHERE mytable.region = 'Midwest'
    AND mytable.training_title = 'My Course') z
GROUP BY district;

要使用进行测试的SQLfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM