查找 MySQL 中的平均出现次数

  • 本文关键字:MySQL 查找 mysql sql
  • 更新时间 :
  • 英文 :


我得到一个显示以下内容的查询

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

最新更新