我得到一个显示以下内容的查询
SELECT
hospital,
initials
FROM patients p, visits v
WHERE p.id=v.user_id
它返回如下表:
Hospital 1 / ID123
Hospital 1 / ID123
Hospital 1 / ID123
Hospital 2 / ID134
Hospital 2 / ID134
Hospital 3 / ID567
Hospital 1 / ID789
如您所见,医院 1 有一个外观具有 3 个相似的 ID,一个外观具有一个 ID。
我需要一个表格来显示平均不同 ID 出现的频率。
Hospital 1 / Average 2
Hospital 2 / Average 2
Hospital 3 / Average 1
这真的让我心碎了。
从隐式连接移动到显式连接。我们使用带有 COUNT 函数的 GROUP BY 子句来确定聚合参数,如平均值。请尝试以下操作:
SELECT
hospital,
COUNT(*)/COUNT(DISTINCT initials) AS average
FROM patients p
INNER JOIN visits v ON v.user_id = p.id
GROUP BY hospital
使用分组依据和聚合:
SELECT
hospital,
count(*)/count(distinct initials)
FROM patients p inner join visits v
on p.id=v.user_id group by hospital
查看您的样本,您可以计算按医院分组的不同首字母
SELECT hospital,
count(distinct initials)
FROM patients p
inner join visits v on p.id=v.user_id
group by hospital
order by hospital
并且您应该避免旧的隐式 joi 基于 where 子句,您应该使用显式内部连接 sintax