Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查找百分比的用例-选择案例子查询_Mysql_Subquery_Case_Percentage - Fatal编程技术网

Mysql 查找百分比的用例-选择案例子查询

Mysql 查找百分比的用例-选择案例子查询,mysql,subquery,case,percentage,Mysql,Subquery,Case,Percentage,几乎是MySQL的初学者。目前正在通过Lynda.com学习 我有一个包含以下表格的数据库 tblmatches - matchID, matchdate, matchtime, matchstatus, teamhomeID, teamAwayID, matchscorehome, matchscoreaway, seasonID, competitonID tblteam - teamID, teamName 我想知道每个队有多少场比赛,两队都有得分 我用下面的语句来计算比赛次数(p

几乎是MySQL的初学者。目前正在通过Lynda.com学习

我有一个包含以下表格的数据库

tblmatches - matchID, matchdate, matchtime, matchstatus, teamhomeID,    teamAwayID, matchscorehome, matchscoreaway, seasonID, competitonID
tblteam - teamID, teamName
我想知道每个队有多少场比赛,两队都有得分

我用下面的语句来计算比赛次数(p),两支球队中有多少场比赛得分(y),但无法计算出如何得到百分比

我按球队名称分组,必须同时使用主客场比赛

SELECT
teamName AS Team, 
Sum(P) AS P,
SUM(Y) AS Y
FROM(
    SELECT
    teamHomeID Team,
    1 P,
    CASE WHEN matchScoreHome AND matchScoreAway > 0 THEN 1 ELSE 0 END Y 
    FROM tblmatches WHERE matchstatus = 'FT' AND competitionID = 1         AND     seasonID = 2
  UNION ALL
  SELECT
   teamAwayID,
   1,
   CASE WHEN matchScoreHome AND matchScoreAway > 0 THEN 1 ELSE 0 END Y
  FROM tblmatches WHERE matchstatus = 'FT' AND competitionID = 1 AND      seasonID = 2
  ) as tab
 JOIN tblteam t ON tab.team=t.teamID
 GROUP BY Team
ORDER BY SUM(Y) DESC ;

任何帮助都将不胜感激

找到了答案,因为仍在学习的人并没有意识到mysql可以工作,而是从引号之间的内容开始。那时我意识到SUM必须在子查询之外,通过google进行一点搜索,并知道如何输入初始选择

SELECT
teamName AS Team, 
Sum(P) AS P,
SUM(Y) AS Y,
(SUM(Y) * 100) / SUM(P) AS 'BTTS PCT'
FROM(
    SELECT
    teamHomeID Team,
    1 P,
    CASE
    WHEN matchScoreHome AND matchScoreAway > 0 THEN 1 ELSE 0 
   END Y 
  FROM tblmatches WHERE matchstatus = 'FT' AND competitionID = 1        AND seasonID = 2
   UNION ALL
   SELECT
   teamAwayID,
   1,
   CASE 
    WHEN matchScoreHome AND matchScoreAway > 0 THEN 1 ELSE 0 
    END Y
   FROM tblmatches WHERE matchstatus = 'FT' AND competitionID = 1 AND   seasonID = 2 
   ) as tab
  JOIN tblteam t ON tab.team=t.teamID
 GROUP BY Team
 ORDER BY SUM(Y) DESC ;