Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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_Sql_Mysql Workbench - Fatal编程技术网

Mysql 有人能告诉我我的命中率查询有什么问题吗?

Mysql 有人能告诉我我的命中率查询有什么问题吗?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我试图弄明白为什么我的总基数和分段查询(它们内置在主查询中)会给我夸大的结果。我在一个单独的查询中运行了每个查询,得到的数字更接近我想要的(但不正确)。你需要一些基本的棒球知识来帮助我 Select bbat.playerID, bmast.firstname, bmast.lastname, bbat.yearID, bbat.TeamID, bmast.bats, bmast.throws,

我试图弄明白为什么我的总基数和分段查询(它们内置在主查询中)会给我夸大的结果。我在一个单独的查询中运行了每个查询,得到的数字更接近我想要的(但不正确)。你需要一些基本的棒球知识来帮助我

Select 
      bbat.playerID, 
      bmast.firstname, 
      bmast.lastname, 
      bbat.yearID, 
      bbat.TeamID, 
      bmast.bats, 
      bmast.throws, 
      bfield.POS, 
      bbat.G, 
      bbat.G_batting, 
      bbat.AB, 
      bbat.R, 
      bbat.H, 
      bbat.2B, 
      bbat.3B, 
      bbat.HR, 
      bbat.RBI, 
      bbat.HBP, 
      bbat.SF, 
      (Sum(H)+(Sum(2B)*2)+(Sum(3B)*3)+(Sum(HR)*4)) as 'TB',
      bbat.BB, 
      bbat.SO, 
      (Sum(BB)/Sum(SO)) as 'BB/K', 
      (SUM(H)/Sum(AB)) as 'Avg',
      ((Sum(H)+Sum(BB)+Sum(HBP))/(Sum(AB)+Sum(BB)+Sum(HBP)+Sum(SF))) as 'OBP', 
      (Sum(H)+(Sum(2B)*2)+(Sum(3B)*3)+(Sum(HR)*4))/Sum(AB) as 'Slugging', 
      (((Sum(H)+Sum(BB)+Sum(HBP))/(Sum(AB)+Sum(BB)+Sum(HBP)+Sum(SF)))+((Sum(H)+(Sum(2B)*2)+(Sum(3B)*3)+(Sum(HR)*4))/Sum(AB))) as 'OPS',
      bbat.SB, 
      bbat.CS, 
      (Sum(SB)/(Sum(SB)+Sum(CS))) as 'Stolen Base %', 
      ((Sum(H)+Sum(BB))*(Sum(H)+(Sum(2B)*2)+(Sum(3B)*3)+(Sum(HR)*4)))/(Sum(AB)+Sum(BB)) as 'Runs Created'
   from 
      baseball.batting bbat 
         inner join ( Select PlayerID, 
                             min(nameFirst) as 'firstname', 
                             min(nameLast) as 'lastname', 
                             bats,
                             throws 
                         from 
                            baseball.master
                         group by 
                            playerID, 
                            nameFirst, 
                            nameLast ) bmast
            on bbat.playerID = bmast.PlayerID
         inner join ( Select PlayerID, 
                             POS
                          from baseball.fielding ) bfield
            on bbat.playerID = bfield.playerID
   where 
          yearID = '2013' 
      and AB > 60 
      and POS != 'P'
   Group by 
      bmast.playerID, 
      bmast.firstname, 
      bmast.lastname;

如果你愿意的话,我可以发布我个人的疑问。请让我知道

虽然MySQL允许您从
分组中排除非聚合字段,但它可能会产生不希望的结果。起点是将
选择
列表中的所有非聚合字段包括在
分组依据
中。您的查询可能还存在其他问题

更新:此子查询有问题,您获取两个值的
MIN()
,但也按它们进行分组(这否定了
MIN()
,并且您没有按蝙蝠/投掷进行分组

 Select PlayerID, 
                             min(nameFirst) as 'firstname', 
                             min(nameLast) as 'lastname', 
                             bats,
                             throws 
                         from 
                            baseball.master
                         group by 
                            playerID, 
                            nameFirst, 
                            nameLast ) bmast

我猜你在找这个

 Select 
  bbat.playerID, 
  bmast.firstname, 
  bmast.lastname, 
  bbat.yearID, 
  bbat.TeamID, 
  bmast.bats, 
  bmast.throws, 
  bfield.POS, 
  bbat.G, 
  bbat.G_batting, 
  bbat.AB, 
  bbat.R, 
  bbat.H, 
  bbat.2B, 
  bbat.3B, 
  bbat.HR, 
  bbat.RBI, 
  bbat.HBP, 
  bbat.SF, 
  ((H)+((2B)*2)+((3B)*3)+((HR)*4)) as 'TB',
  bbat.BB, 
  bbat.SO, 
  ((BB)/(SO)) as 'BB/K', 
  ((H)/(AB)) as 'Avg',
  (((H)+(BB)+(HBP))/((AB)+(BB)+(HBP)+(SF))) as 'OBP', 
  ((H)+((2B)*2)+((3B)*3)+((HR)*4))/(AB) as 'Slugging', 
  ((((H)+(BB)+(HBP))/((AB)+(BB)+(HBP)+(SF)))+(((H)+((2B)*2)+((3B)*3)+((HR)*4))/(AB))) as 'OPS',
  bbat.SB, 
  bbat.CS, 
  ((SB)/((SB)+(CS))) as 'Stolen Base %', 
  (((H)+(BB))*((H)+((2B)*2)+((3B)*3)+((HR)*4)))/((AB)+(BB)) as 'Runs Created'
 from 
 ....

查看您的模式、输入数据和输出(预期和实际)将非常有用。在不太快地转储的情况下,您希望从输入和输出中获得什么?(1940年至今的mlb数据,以及2013年之前的输出过滤器)它在某种程度上起了作用。它将结果按位置进行了划分,至少让我看到哪些是膨胀的总基数和打击百分比。当我上下一节课时,我可以尝试一下,看看它是否有效。给我一些!