gpt4 book ai didi

mysql - Mysql - 从另一个表行引用数据

转载 作者:行者123 更新时间:2023-11-29 01:37:28 28 4
gpt4 key购买 nike

我不知道这是否可能。我有两个表:

医院表中的列

  • 医院ID
  • 姓名
  • 平均评分

ratings 表中的列

  • 身份证
  • 评分1
  • 评分2
  • 评分3
  • 评分4
  • 评分5
  • 评分6
  • 医院ID

rating1rating6是评级的类型。现在 calculation我能够得到 average ratingparticular hospitalratings来自以下 SELECT 查询的表

SELECT IFNULL((SUM(charges) + SUM(behaviour) + SUM(admission) + SUM(properInformation) 
+ SUM(hygine) + SUM(treatment))/(count(hospitalID) * 6), 0
) AverageRating,COUNT(ID) RatingCount
FROM ratings
WHERE hospitalID = '111111'

上面的查询非常适合我,但是这个 averageRating我还想在我的医院表中进行计算,因为我想对医院进行排名。

mySQL 中是否有任何函数可以通过引用评级表计算医院表的平均评级。

评级表 enter image description here

查询输出表 enter image description here

最佳答案

根据给定的表结构,你可以试试这个。

编辑

SELECT avgratings.*, @curRow := @curRow + 1 AS hospitalRank
FROM (
SELECT (SUM(r.`rating1`)+SUM(r.`rating2`)+SUM(r.`rating3`)+SUM(r.`rating4`)+SUM(r.`rating5`)+SUM(r.`rating6`))/(COUNT(r.`hospitalID`)*6) AS AverageRating, h.hospitalID
FROM hospitals h INNER JOIN ratings r
ON h.`hospitalID`=r.`hospitalID`
WHERE 1 GROUP BY r.`hospitalID`
) avgratings JOIN (SELECT @curRow := 0) rank
ORDER BY avgratings.AverageRating DESC

第二次查询以获得特定医院的排名。

SELECT tablea.*
FROM (
SELECT avgratings.*, @curRow := @curRow + 1 AS hospitalRank
FROM (
SELECT (SUM(r.`rating1`)+SUM(r.`rating2`)+SUM(r.`rating3`)+SUM(r.`rating4`)+SUM(r.`rating5`)+SUM(r.`rating6`))/(COUNT(r.`hospitalID`)*6) AS AverageRating, h.hospitalID
FROM hospitals h INNER JOIN ratings r
ON h.`hospitalID`=r.`hospitalID`
WHERE 1 GROUP BY r.`hospitalID`
) avgratings JOIN (SELECT @curRow := 0) rank

) tablea
WHERE tablea.hospitalID=1 ORDER BY tablea.AverageRating DESC

WHERE block 中的 1 替换为 hospitalID

关于mysql - Mysql - 从另一个表行引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950979/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com