【问题标题】:How do I inner join and group by multiple times?我如何多次内部加入和分组?
【发布时间】:2021-12-31 14:58:47
【问题描述】:

我正在编写一个查询,该查询应返回一份报告,其中包括在该机构工作的公共卫生工作者总数、人们在该机构中接种的总剂量以及人们计划接种的总剂量在未来的设施中。我将任务分为三个 SQL 代码:

-- 1 名公共卫生工作者在该设施工作

SELECT `name`,  address, phone, type, phone, capacity, COUNT(person_id) AS totalWorkers
FROM healthcare_worker
INNER JOIN facility ON facility.`name`= healthcare_worker.facility_name
GROUP BY healthcare_worker.facility_name

-- 2 人们在设施中接受的剂量总数

SELECT `name`,  address, phone, type, phone, capacity, SUM(dose) AS totalDose
FROM vaccination
INNER JOIN facility ON facility.`name`= vaccination.location
GROUP BY vaccination.location

-- 3 未来设施中人们计划接种的总剂量

SELECT `name`,  address, phone, type, phone, capacity, COUNT(booking_id) AS totalBookings 
FROM booking
INNER JOIN facility ON facility.`name`= booking.facility_name
GROUP BY booking.facility_name

我可以将它们放在一个查询中吗?

【问题讨论】:

  • 合并如何?向我们展示 3 个结果,以及您希望它们如何组合。 (全部为格式化文本,没有图像。)
  • 如果您只提供每个表的示例数据和您想要的结果,您会得到更好的答案。
  • 你可以在这里查看类似问题的答案stackoverflow.com/questions/8974328/…

标签: mysql sql


【解决方案1】:

您可以使用相关的子查询

SELECT `name`, address, phone, `type`, capacity
, ( SELECT COUNT(person_id)
    FROM healthcare_worker
    WHERE fac.`name`= healthcare_worker.facility_name
  ) AS totalWorkers
, ( SELECT SUM(dose)
    FROM vaccination
    WHERE fac.`name`= vaccination.location
  ) AS totalDose
, ( SELECT COUNT(booking_id)
    FROM booking
    WHERE fac.`name`= booking.facility_name
  ) AS totalBookings
FROM facility AS fac
name address phone type capacity totalWorkers totalDose totalBookings
finalcare venice 00 00 04 morgue 4 3 15 3
wevac xxx 79 72 04 private 69 3 6 3

db小提琴here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多