0

mysqlでは、前の出力データを使用してクエリを実行できます。すなわち、

 select IPAddress,Sum(L2FramesSent),convert((min(datetime) div 500)*500, datetime) + INTERVAL 5 minute as endOfInterval from databasename.tablename  where datetime BETWEEN '2012-09-20 10:00:00' AND '2012-09-20 16:45:00' group by datetime div 500;

上記のクエリによって私は得ました

+-----------+-------------------+---------------------+
| IPAddress | Sum(L2FramesSent) | endOfInterval       |
+-----------+-------------------+---------------------+
| moteid6   |            523791 | 2012-09-20 10:05:00 |
| moteid4   |            349555 | 2012-09-20 11:00:00 |
| moteid6   |            276358 | 2012-09-20 11:05:00 |
| moteid4   |            525457 | 2012-09-20 12:00:00 |
| moteid4   |            960010 | 2012-09-20 12:05:00 |
| moteid13  |           1263313 | 2012-09-20 12:10:00 |
| moteid12  |           1001343 | 2012-09-20 12:15:00 |
| moteid4   |            325904 | 2012-09-20 13:00:00 |
| moteid14  |            691390 | 2012-09-20 13:05:00 |
| moteid4   |           1028479 | 2012-09-20 15:40:00 |
| moteid12  |           1394286 | 2012-09-20 15:45:00 |
| moteid12  |           1336231 | 2012-09-20 15:50:00 |
| moteid6   |            263674 | 2012-09-20 15:55:00 |
+-----------+-------------------+---------------------+

今、私differenceは2つの行の間に欲しいですこれを与えるとそれを取得することは可能ですか?

select (b.Sum(L2FramesSent) - a.Sum(L2FramesSent)),convert((min(a.datetime) div 500)*500, datetime) + INTERVAL 5 minute as endOfInterval from tablename.databasename a,tablename.databasename b where a.datetime BETWEEN '2012-09-12 11:00:00' AND '2012-09-12 17:05:00' group by a.datetime div 500;

エラーが発生します ERROR 1630 (42000): FUNCTION b.Sum does not exist。リファレンスマニュアルの「関数名の解析と解決」セクションを確認してください

テーブル名とデータベース名はどちらも同じです。

4

1 に答える 1

0

間違いはここにあります:

select (b.Sum(L2FramesSent) - a.Sum(L2FramesSent))

試す

select (Sum(b.L2FramesSent) - Sum(b.L2FramesSent))

代わりは

a と b はテーブルのエイリアスであり、 sum は (一般に利用可能な) 関数です。

于 2012-09-25T08:26:13.133 に答える