mysql - 使用案例查找百分比 - SELECT CASE 子查询

标签 mysql subquery case percentage

几乎是 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 必须位于子查询之外,通过谷歌进行了一些搜索,并知道要放入初始 SELECT

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 ;

关于mysql - 使用案例查找百分比 - SELECT CASE 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208985/

相关文章:

mysql - MySQL 上针对 REGEXP 匹配的奇怪 SQL 查询结果

Mysql-如何在案例数达到峰值时获取最大日期

mysql - 在mysql中使用别名where条件来计算

mysql - Case 或 IF THEN 为值添加减号

MySQL 子查询

arrays - Visual Basic 数组 case 语句

java - 日期之间的Mysql不起作用

php - 如果它们具有相同的名称,则回显 fetch_array 行

mysql - 在使用 JOIN 进行 GROUP BY 之前进行 ORDER BY

mysql - 在 mysql 中使用 subselect 更新列时遇到问题