mysql の再起 CTE で float 型を取り扱いたい
MySQL の CTE の列の型に、double 精度の浮動小数点であることを強制したいのですが、これは可能でしょうか?
というのも、MySQL :: MySQL 8.0 Reference Manual :: 13.2.13 WITH Syntax (Common Table Expressions) のページを見ていたのですが、
- MySQL の CTE の syntax には column type を指定するところがない
- "The types of the CTE result columns are inferred from the column types of the nonrecursive SELECT part only" つまり再起CTEでは最初の select 区のフィールドの型によって、その CTE 全体の戻り値の型が決定される。
- つまり、初期値が int で、 union していく中で float/double になっていくような、集計系の CTE では、これはあまり良い性質ではないように思われる
- 初期の select 区において double 型にキャストしようとドキュメントを見ているが、それを行う項目が見当たらない
- https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html を見ても、 Decimal (自分の理解だといわゆる BigDecimal) はあるが、 float/double に相当するデータ型はない
質問
mysql の再起 CTE にて、戻り値フィールドの型を確実に double (倍精度浮動小数点) になるようにすることは可能ですか?