我偶然发现了一个我无法解决的问题。
我有以下主题相关表格:
潜水(ID、类型、Diver_id、难度、Contest_id)
结果(ID、积分、Judge_Id、Dive_id)
潜水员(ID、姓名、国家/地区)
我的 SELECT 语句旨在列出 diver.Name、diver.Country 和“总分”
总分应该是(总分 += ((dive_total -min -max)*difficulty))
假设一名潜水员进行了 3 次潜水。每次潜水都由约 4 名评委进行评分,并且每次潜水都有其自己的难度。每次潜水的最低/最高分数应该被删除。然后相加,乘以难度,然后加上该人的总分。
我有一个显示 diver.Name、diver.Country 和 Total 的列表。 但合计只是实际合计,没有进行减法和乘法。
查询:
SELECT
divers.Name,
divers.Country,
SUM(results.Points) AS Total
FROM results
INNER JOIN dive
ON results.Dive_id = dive.ID
INNER JOIN divers
ON dive.Diver_id = divers.ID
WHERE dive.Contest_id = '1'
GROUP BY divers.Name
ORDER BY Total DESC
不要介意competition_id。它始终是“1”。
如有需要,请索取更多信息。也许这个问题很愚蠢。我不是一个高级的“数据库专家”。提前抱歉英语不好。
(稍后在 php/html 中打印。也许 mysql 和 php 之间的语言组合是更好的前进方式?)
最佳答案
我想你想要的是这个
SELECT
divers.Name,
divers.Country,
((SUM(results.Points) - MAX(results.Points) - MIN(results.Points)) * dive.Difficulty) AS Total
FROM results
INNER JOIN dive
ON results.Dive_id = dive.ID
INNER JOIN divers
ON dive.Diver_id = divers.ID
WHERE dive.Contest_id = '1'
GROUP BY divers.Name
ORDER BY Total DESC
否则我只需将 SELECT 更改为包含:
MIN(results.Points) as maxPoints,
MAX(results.Points) as minPoints,
SUM(results.Points) as totalPoints
然后使用 PHP 进行数学计算
关于php - MYSQL:除最高和最低值外的总计值然后相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039424/