![](/img/trans.png)
[英]Calculating amout of minutes between 2 times and divide it by amount of records
[英]calculating the amount of minutes in a query
我正在尋找一種方法來計算我團隊中每個球員(或這里只有一個)的上場時間。 簡化后的數據庫表如下:
matchid action minute player
-------------------------------------
1 subbedin 30 Pele
2 starter Pele
2 subbedout 50 Pele
3 subbedin 70 Pele
3 red 80 Pele
4 starter Pele
我現在對其他統計數據的查詢:
$query = mysql_query("SELECT *,
SUM(CASE WHEN action = 'starter' OR action = 'subbedin' THEN 1 ELSE 0 END) AS games,
SUM(CASE WHEN action = 'goal' OR action = 'pengoal' THEN 1 ELSE 0 END) AS goals,
SUM(CASE WHEN action = 'yellow' THEN 1 ELSE 0 END) AS yellows,
SUM(CASE WHEN action = 'red' THEN 1 ELSE 0 END) AS reds,
// MINS GOES HERE
FROM league2012
GROUP BY player");
對於每個 matchid,基本計算是
( 90 OR subbedout OR red ) - ( starter OR subbedin )
例如在比賽 2
subbedout (50) - starter (0) = 50
最后,該表應如下所示:
player minutes goals, cards, etc.
---------------------------------------
Pele 210 ...
在過去的一個小時里,我一直在學習教程,但似乎不知道該怎么做。
sum
(
case action
when 'subbedin' then 90 - minute
when 'starter' then 90
when 'subbedout' then minute - 90
when 'red' then minute - 90
end
) as minutes
我會先計算每個球員在每場比賽中的上場時間,然后將它們加起來得到每個球員的總分。 要將獲得的結果與您正在計算的其他統計數據相結合,我認為除了以相同的方式計算其他統計數據之外別無他法,即首先是每個球員和比賽,然后是每個球員。 這就是我的意思:
SELECT
player,
SUM(games) AS games,
SUM(goals) AS goals,
SUM(yellows) AS yellows,
SUM(reds) AS reds,
SUM(minutesplayed) AS minutesplayed
FROM (
SELECT
player,
matchid,
SUM(CASE WHEN action IN ('starter', 'subbedin') THEN 1 ELSE 0 END) AS games,
SUM(CASE WHEN action IN ('goal', 'pengoal') THEN 1 ELSE 0 END) AS goals,
SUM(CASE WHEN action = 'yellow' THEN 1 ELSE 0 END) AS yellows,
SUM(CASE WHEN action = 'red' THEN 1 ELSE 0 END) AS reds,
IFNULL(SUM(CASE WHEN action IN ('subbedout', 'red') THEN minute END), 90)
- IFNULL(SUM(CASE WHEN action = ('subbedin') THEN minute END), 0) AS minutesplayed
FROM league2012
GROUP BY
player,
matchid
) s
GROUP BY
player
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.