- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一张表格,其中包含保龄球中心球员的投球得分。每一行都有一些数据,比如哪个球员投了球,参加了哪个联赛,日期,单场比赛的比分,球道号等。
我想做的是让谁(以及在哪个联赛和什么日期......基本上是整排)在每个单车道上打出最好的系列赛(三场比赛)。
我目前的情况是
SELECT PlayerID, LaneNumber, MAX(Series)
FROM (SELECT Season, LeagueName, LaneNumber, WeekNumber, PlayerID, Date, SUM(Score) AS Series
FROM Scores
GROUP BY Season, LeagueName, WeekNumber, PlayerID)
GROUP BY LaneNumber
这行得通,因为我在每条车道上都获得了最好的三场比赛,这实际上是我想要的,但包含 PlayerID 的另一个字段实际上并不正确。
在我的表格中,第 24 道的最佳分数(从 SUM(Score) 和 GROUP BY Season、LeagueName、WeekNumber、PlayerID 获得)是 848,由 PlayerID 为 36 的玩家打出。
我得到的是带 848 的第 24 道(这是正确的),但返回的 PlayedID 是 3166。同样的事情发生在每条道上。 (例如,我得到的 PlayerID 显然是错误的。如果我在第一个选择中有其他列,它们也是错误的)
最佳答案
您违反了 GROUP BY
的语义。
当使用 GROUP BY
时,它只对 SELECT
您分组的列(例如 LaneNumber
)和其他聚合函数有意义列(例如 MAX(Series)
)。选择其他任何内容(在您的情况下,PlayerID
)没有意义,因为您没有指定您想要哪个共享相同 LaneNumber 的玩家 ID
。
遗憾的是,默认情况下,MySql 将允许您执行此操作而不会报告错误,并且它将返回它为违规列选择的任何值。在您的情况下,这意味着您正在取回一个“随机”选择的播放器 ID,这些播放器 ID 是从指定分组中包含的那些播放器 ID 中选择的。
您也在内部查询中执行此操作,您可以在其中选择 LaneNumber
、WeekNumber
和 Date
。
解决方案
查询需要重写,但首先您需要仔细指定您想要获得的结果。您想要每个系列赛(和任何车道)的最佳球员和相关数据吗?对于每个系列和车道分别?这个问题的答案将决定您需要什么来GROUP BY
,以及查询的扩展形式。
关于mysql - 返回 MySQL 中 MAX 函数的相应列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399444/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!