[英]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.