【问题标题】:MySQL - Compare TWO tables and SUM themMySQL - 比较两个表并将它们求和
【发布时间】:2019-03-13 16:14:01
【问题描述】:

我正在努力研究如何将 两张 表相互比较,同时对它们进行总计(SUM)。

例如,我有以下 2 个表:

表 1

tablename: master
col1: code
col2: categories

数据

 categories     code
 GP              a01
 GP              a02
 GP              a03
 DENTAL          d01
 DENTAL          d02
 DENTAL          d02
 DENTAL          d03
 DENTAL          d04
 OPTOM           o01

表 2

tablename: submissions
col1: code

数据

  code
  a01
  a02
  a03
  d04
  d01
  o01
  a03

我需要通过代码链接两个表格,看看谁在提交表格中提交了谁没有然后计算出总体百分比:

我的理想结果:

categories   codes_total    received    outstanding   percentage received
category 1       200           40            160             20%
category 2       100           10            90              10%

除了这个,我真的不知道从哪里开始??:

 SELECT categories, sum(total1), sum(total2), sum(total3) FROM (

  (SELECT categories, count(*) t1
  FROM master) as total1,

  (SELECT categories, count(*) t2
  FROM master
  LEFT JOIN submissions ON submissions.code=master.code) 
  )as total2,

  (SELECT categories, count(*) t3
  FROM master
  LEFT JOIN submissions ON submissions.code=master.code
  WHERE submissions.code IS NULL) 
  )as total3

) FOO
  GROUP BY categories

我的方向是正确的???

【问题讨论】:

  • 嗨,马克斯。您能给我们提供数据样本吗?
  • 嗨 DanB 我已经更新了我的问题,包括一些数据

标签: mysql join select sum


【解决方案1】:
select master.categories, count(*) codes_total,
        (select count(*)
                    FROM master master2
                            inner join submissions on master2.code = submissions.code
                    where master2.categories = master.categories) received,
        count(*) - (select count(*)
                    FROM master master2
                            inner join submissions on master2.code = submissions.code
                    where master2.categories = master.categories) `outstanding`,

        (select count(*)
                    FROM master master2
                            inner join submissions on master2.code = submissions.code
                    where master2.categories = master.categories) / count(*) * 100 as `percentage received`

from master

group by master.categories
order by master.categories;

【讨论】:

  • 谢谢您!...如此接近!但它说GP没有收到。
  • 您想排除接收代码为 0 的类别,对吧?
  • 我想理想地包含所有内容,因此所有类别都通过显示主类别的总数、已收到、未完成和百分比来显示 - 这是用于仪表板
  • 我的最后一次更新是否没有显示正确的价值,包括所有类别,包括那些提交 0 的类别?
  • 你这个美女!...成功了!!!!....感谢您抽出时间来帮助我!
猜你喜欢
  • 2017-04-22
  • 2012-06-04
  • 2017-11-22
  • 2019-01-03
  • 1970-01-01
  • 2016-08-29
  • 2020-07-03
  • 1970-01-01
  • 2011-02-06
相关资源
最近更新 更多