基本上,我正在尝试计算高尔夫在四个不同球上的击球次数,这是我的数据:-
DatePlayed PlayerID HCap Groups Hole01 Hole02 Hole03 Shots
2018-11-10 001 15 2 7 3 6
2018-11-10 004 20 1 7 4 6
2018-11-10 025 20 2 7 4 5
2018-11-10 047 17 1 8 3 6
2018-11-10 048 20 2 8 4 6
2018-11-10 056 17 1 6 3 5
2018-11-10 087 18 1 7 3 5
我想用另外一列来检索以上各行,具体取决于组列值,即玩家(让分-(组中最低的让分))x .75
我可以通过分组实现它,但是需要汇总所有内容,有没有办法像上面那样返回值?这是返回值的查询:
SELECT
PlayerID,
MIN(Handicap),
MIN(Hole01) AS Hole01,
MIN(Hole02) AS Hole02,
MIN(Hole03) AS Hole03,
MIN(CourseID) AS CourseID,
Groups,
ROUND(
MIN((Handicap -
(SELECT MIN(Handicap) FROM Results AS t
WHERE DatePlayed='2018-11-10 00:00:00' AND t.Groups=Results.Groups)) *.75))
AS Shots
FROM
Results
WHERE
Results.DatePlayed='2018=11=10 00:00:00'
GROUP BY
DatePlayed, Groups, PlayerID
。
PlayerID MIN(Handicap)Hole01 Hole02 Hole03 CourseID Groups Shots
4 20 7 4 6 1 1 2
47 17 8 3 6 1 1 0
56 17 6 3 5 1 1 0
87 18 7 3 5 1 1 1
1 15 7 3 6 1 2 0
25 20 7 4 5 1 2 4
48 20 8 4 6 1 2 4
对不起,任何格式真的看不到如何在这里获取表格,我们将不胜感激,我使用的是来自ubuntu 18.04的最新mysql
答案 0 :(得分:0)
不是答案;评论太久了...
首先,我对高尔夫球一无所知,因此接下来的事情可能不是最佳选择,但至少必须朝着正确的方向迈进。
标准化的架构可能看起来像这样...
rounds
round_id DatePlayed PlayerID HCap Groups
1 2018-11-10 1 15 2
2 2018-11-10 4 20 1
round_detail
round_id hole shots
1 1 7
1 2 3
1 3 6
2 1 7
2 2 4
2 3 6
答案 1 :(得分:0)
大家好,我已经找到了解决方案,基本上我需要在等式的ROUND之后立即删除MIN,因此不需要Group By。
选择
PlayerID, Handicap, Hole01, Hole02, Hole03, CourseID, Groups, ROUND((Handicap - (SELECT MIN(Handicap) FROM Results AS t WHERE DatePlayed='2018-11-10 00:00:00' AND t.Groups=Results.Groups)) *.75) AS Shots
从
Results
位置
Results.DatePlayed='2018=11=10 00:00:00'