MySQL 8.0.21 中的 ROLLUP 问题
Problems with ROLLUP in MySQL 8.0.21
在 AWS 上使用 MySQL 8.0.21 我有一个包含概率的 table。将其分组为 0.1 个波段可得到预期结果
SELECT TRUNCATE(table_s.Prob,1) AS p,COUNT(*) AS c
FROM TableName table_s
GROUP BY TRUNCATE(table_s.Prob,1)
"p" "c"
"0.4" "85343"
"0.8" "74197"
"0.1" "21430"
"0.7" "107968"
"0.5" "130740"
"0.9" "26086"
"0.2" "35472"
"0.3" "51087"
"0.6" "125925"
NULL "1276971"
"0.0" "8733"
但是,如果我也尝试获取汇总,这会弄乱乐队:
SELECT TRUNCATE(table_s.Prob,1) AS p,COUNT(*) AS c,
FROM TableName table_s
GROUP BY TRUNCATE(table_s.Prob,1)
WITH ROLLUP
"p" "c"
NULL "1276970"
"0" "8733"
"0." "21430"
"0." "35473"
"0." "51087"
"0." "85342"
"0." "130740"
"1" "125925"
"1" "107968"
"1" "74198"
"1" "26086"
NULL "1943952"
请注意,引号只是粘贴来自 MySQL 的数据,Prob 被定义为双精度数(但可以有 NULL)。不知道为什么上面的 p 值有那些点。
如果使用 FLOOR 或 ROUND 重写 TRUNCATE,则类似行为适用。
最近从 MySQL 8.0.17 升级,我认为这不是问题,一切正常。
该行为似乎适用于 8.0.21 和 8.0.22,如 fiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=df65003f39f8822818e7483f9972fe05
所示
这已被 MySQL 验证为错误。 https://bugs.mysql.com/bug.php?id=101684
在 AWS 上使用 MySQL 8.0.21 我有一个包含概率的 table。将其分组为 0.1 个波段可得到预期结果
SELECT TRUNCATE(table_s.Prob,1) AS p,COUNT(*) AS c
FROM TableName table_s
GROUP BY TRUNCATE(table_s.Prob,1)
"p" "c"
"0.4" "85343"
"0.8" "74197"
"0.1" "21430"
"0.7" "107968"
"0.5" "130740"
"0.9" "26086"
"0.2" "35472"
"0.3" "51087"
"0.6" "125925"
NULL "1276971"
"0.0" "8733"
但是,如果我也尝试获取汇总,这会弄乱乐队:
SELECT TRUNCATE(table_s.Prob,1) AS p,COUNT(*) AS c,
FROM TableName table_s
GROUP BY TRUNCATE(table_s.Prob,1)
WITH ROLLUP
"p" "c"
NULL "1276970"
"0" "8733"
"0." "21430"
"0." "35473"
"0." "51087"
"0." "85342"
"0." "130740"
"1" "125925"
"1" "107968"
"1" "74198"
"1" "26086"
NULL "1943952"
请注意,引号只是粘贴来自 MySQL 的数据,Prob 被定义为双精度数(但可以有 NULL)。不知道为什么上面的 p 值有那些点。
如果使用 FLOOR 或 ROUND 重写 TRUNCATE,则类似行为适用。
最近从 MySQL 8.0.17 升级,我认为这不是问题,一切正常。
该行为似乎适用于 8.0.21 和 8.0.22,如 fiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=df65003f39f8822818e7483f9972fe05
所示这已被 MySQL 验证为错误。 https://bugs.mysql.com/bug.php?id=101684