MySQL按多个表分组

时间:2019-10-09 20:38:15

标签: mysql

您好,我正在查看Mysql查询以将计数显示为来自两个表的组

表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_name,COUNT(v_id)
FROM visit      
GROUP BY employee_name; 

我使用了上面的代码。它仅显示访问计数。但是如何获得结果表

1 个答案:

答案 0 :(得分:1)

有了这句话

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位。 您应该看看是否正是您所需要的。