Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql计数按多个表分组_Mysql - Fatal编程技术网

Mysql计数按多个表分组

Mysql计数按多个表分组,mysql,Mysql,您好,我正在寻找Mysql查询以显示来自两个表的count作为组 表1=工厂 P_id Plant location Employee 1 DUBAI Employee A 2 SHARJAH Employee A 3 OMAN Employee B 4 DAMMAM Employee C 5 RIYADH Employee C 表2

您好,我正在寻找Mysql查询以显示来自两个表的count作为组

表1=工厂

P_id    Plant location  Employee
1         DUBAI         Employee A
2         SHARJAH       Employee A
3         OMAN          Employee B
4         DAMMAM        Employee C
5         RIYADH        Employee C
表2=访问

V_id    Visit status    Plant location  Employee
1        Done            DUBAI           Employee A
2        Done            SHARJAH         Employee A
3        Done            OMAN            Employee B
4        Done            RIYADH          Employee C
我需要结果

Employee    Visit Completed Remaining Visits    Result
Employee A       2             0                100 %
Employee B       1             0                100 %
Employee C       1             1                50%
我使用了上面的代码。它只显示访问计数。但是我怎样才能用这个语句得到上面的结果表呢

SELECT
   Employee,
   count_plant `Visit Completed` 
   ,(count_plant -count_visits)`Remaining Visits`
   , CONCAT(ROUND(((count_visits / count_plant) * 100),1), " %") Result
FROM
  (SELECT 
    p.Employee,
   COUNT(p.`Plant location`) count_plant
   ,COUNT(v.`Plant location`) count_visits
  FROM
    (SELECT
     * FROM plant) p
    LEFT join
      (SELECT *
       FROM visits 
       WHERE `Visit status` =  'Done' ) v
       ON p.Employee = v.Employee 
          and p.`Plant location` = v.`Plant location`
 GROUP BY p.Employee) p_v;
给出以下结果

Employee    Visit Completed     Remaining Visits    Result
Employee A  2                   0                   100.0 %
Employee B  1                   0                   100.0 %
Employee C  2                   1                   50.0 %
结果列在逗号后四舍五入为i位数。
您应该看看这是否是您所需要的。

访问和完成从何而来?计算的百分比是多少?工厂的
表是用来做什么的?这个问题有一些不一致之处。首先,您没有解释结果字段,我假设它是根据“访问状态”和计数(V_id)计算的。如果是这种情况,你需要在你的问题中包括这一点。此外,由于有两个表,SELECT语句中必须有一个联接,例如…从访问a联接工厂B到a.Employee=B.Employee。。。请在您的问题中添加更多详细信息。
Employee    Visit Completed     Remaining Visits    Result
Employee A  2                   0                   100.0 %
Employee B  1                   0                   100.0 %
Employee C  2                   1                   50.0 %