以下のようなデータがあって、分単位での統計情報を出すにはどうすればいいのでようか。
time(Unix_time) count_1 count_2 count_3
-----------------------------------------
2012-02-23 13:01 0 2 0
2012-02-23 13:01 1 1 0
2012-02-23 13:01 2 2 3
2012-02-23 13:01 0 2 0
2012-02-23 13:01 1 5 2
2012-02-23 13:02 1 2 2
2012-02-23 13:02 0 1 2
2012-02-23 13:02 1 1 0
↓ ↓ ↓
以下のように出力させたい
time(Unix_time) count_1 count_2 count_3
-----------------------------------------
2012-02-23 13:01 4 12 5
2012-02-23 13:02 2 4 4
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
単純にtimeでgroup byすればよいのでは?
create table hoge (id int,time_a datetime,count_1 int,count_2 int, count_3 int);
insert into hoge values(1,'2012-02-23 13:01',0,2,0),(2,'2012-02-23 13:01',1,1,0),(3,'2012-02-23 13:01',2,2,3),(4,'2012-02-23 13:01',0,2,0),(5,'2012-02-23 13:01',1,5,2),(6,'2012-02-23 13:02',1,2,2),(7,'2012-02-23 13:02',0,1,2),(8,'2012-02-23 13:02',1,1,0);
select time_a,sum(count_1) as sum_1,sum(count_2) as sum_2,sum(count_3) as sum_3 from hoge group by time_a;
※ただし、datetime型で持つ場合、秒まで入力されると集計がバラけます。
秒は常に0とするか、文字列なら問題ないです。
この回答への補足
floorを使って何とかUNIXタイムを秒単位まで揃えましたが、出力はだめでした。
select floor(time / 60) * 60 as time,sum(count_1) as count_1,sum(count_2) as count_2,sum(count_3) as count_3 from hoge group by time;
出力結果:
time count_1 count_2 count_3
-----------------------------------------
1330082280 1 0 0
1330082280 0 2 3
1330082280 0 2 0
1330082340 1 2 3
1330082340 2 1 1
1330082340 2 1 0
ありがおとうございます。
timeはint型(int(10) unsigned)でUNIX TIMEになっています。。。
この場合の出し方ってありますでしょうか。
No.2
- 回答日時:
条件定義があいまいなので正確に答えられないのですが、
元データは秒までもっているということですね?
別名にフィールド名を利用してしまうとgroup byするときに
フィールド名が優先されているだけじゃない?
別名にユニークなものを利用してください。
create table hoge (id int,time_a int unsigned,count_1 int,count_2 int, count_3 int);
insert into hoge values(1,unix_timestamp('2012-02-23 13:01'),0,2,0)
,(2,unix_timestamp('2012-02-23 13:01:01'),1,1,0)
,(3,unix_timestamp('2012-02-23 13:01:02'),2,2,3)
,(4,unix_timestamp('2012-02-23 13:01:03'),0,2,0)
,(5,unix_timestamp('2012-02-23 13:01:04'),1,5,2)
,(6,unix_timestamp('2012-02-23 13:02:01'),1,2,2)
,(7,unix_timestamp('2012-02-23 13:02:02'),0,1,2)
,(8,unix_timestamp('2012-02-23 13:02:03'),1,1,0);
select FROM_UNIXTIME(time_a - time_a % 60) as time_b,sum(count_1) as sum_1,sum(count_2) as sum_2,sum(count_3) as sum_3
from hoge group by time_b;
余談ですが、集計を前提としているDBなら、insert するときに各レコードに
分までの集計用カラムを埋め込んでおくのが効率的ですね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL カラムの値ごとの集計
-
結合したテーブルに名前をつけ...
-
ファイルの漢数字の順番につい...
-
SQLで曜日のソートを月火水木金...
-
MYSQLのINSERT記述...
-
複数のテーブルから値を合計出...
-
MySQLでのフィールドの結合
-
SQL文(重複データを省く)
-
Oracleで「文字が無効です」の...
-
SQL*Loader Append
-
レコードの登録順がおかしい
-
[ADO.NET]Accessの日付型にデー...
-
youtube
-
SELECT FOR UPDATE で該当レコ...
-
「数字で始まらない」ものを抽...
-
エクセル、並び替え正しくソー...
-
一つのフィールドに複数の情報...
-
1レコード全てを改行なしで表...
-
実人数と延べ人数
-
空欄の処理について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
count関数の値をwhere句で使用...
-
OUTER JOIN とgroup by
-
結合したテーブルに名前をつけ...
-
VB データグリッドビューへの表示
-
日本語で、likeを使うと値が正...
-
小数点以下桁数が最大の値に小...
-
【バグ?】ORDER BY DESCでempty
-
最大値の数をカウントしたい
-
mysql分単位での統計情報
-
SQL カラムの値ごとの集計
-
Perlからのアクセス。カウント...
-
SQL 自己結合で件数の条件指定
-
MySQLのselect文の設定に関して
-
条件について
-
同一カラム名でjoinしたところ...
-
初歩的な質問ですが、教えてく...
-
複雑なSQLを一発で実行
-
【初歩】項目別の合計件数をSQL...
-
ストアドファンクションの再帰...
-
count(*)
おすすめ情報