テーブルを集計するために集計関数(AVG、COUNT)でTO_SECONDSを使用したいと思います。しかし、結果は私が期待したものではありませんでした。ここでは例のテーブルには、次のとおりです。MariaDB/MySQL TO_SECONDSとAGGREGATE関数
MariaDB [test]> select * from mytable;
+----+---------------------+------+
| id | ts | val |
+----+---------------------+------+
| 1 | 2016-01-01 01:02:03 | 1 |
| 2 | 2016-01-01 01:02:04 | 2 |
| 3 | 2016-01-01 01:02:04 | 3 |
| 4 | 2016-01-01 01:02:05 | 4 |
| 5 | 2016-01-01 01:02:05 | 5 |
+----+---------------------+------+
クエリ#1(OK):
MariaDB [test]> select to_seconds(ts) as tsec from mytable;
+-------------+
| tsec |
+-------------+
| 63618829323 |
| 63618829324 |
| 63618829324 |
| 63618829325 |
| 63618829325 |
+-------------+
クエリ#2(?):
MariaDB [test]> select to_seconds(ts) as tsec, avg(val) mval from mytable group by tsec;
+------------+------+
| tsec | mval |
+------------+------+
| 2147483647 | 3 |
+------------+------+
期待される結果:
+-------------+------+
| tsec | mval |
+-------------+------+
| 63618829323 | 1 |
| 63618829324 | 2.5 |
| 63618829325 | 4.5 |
+-------------+------+
SQLフィドル:http://sqlfiddle.com/#!9/17616a/6
MariaDBのバージョン> mysql Ver 15.1 Distrib 10.1.17-MariaDB、Linux(x86_64)for readline 5.1
もちろん、他のDATE/TIME関数(UNIX_TIMESTAMPなど)を使用してタスクを実行できます。しかし、なぜ結果が違うのかを知りたい。
私は何が欠けていますか?私はTO_SECONDSの使用法を誤解していますか?
これはデータ型の問題のようです。戻り値は大きなintではなく整数として扱われています。 –