mysql分単位での統計情報を出力する方法
- mysqlのデータには、time(Unix_time)、count_1、count_2、count_3の情報があります。
- 分単位での統計情報を出すには、time(Unix_time)ごとにcount_1、count_2、count_3を合計する必要があります。
- 出力結果は、time(Unix_time)と合計されたcount_1、count_2、count_3の情報となります。
- ベストアンサー
mysql分単位での統計情報
以下のようなデータがあって、分単位での統計情報を出すにはどうすればいいのでようか。 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 よろしくお願いします。
- rere2006
- お礼率29% (22/75)
- MySQL
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純に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とするか、文字列なら問題ないです。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
条件定義があいまいなので正確に答えられないのですが、 元データは秒までもっているということですね? 別名にフィールド名を利用してしまうと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 するときに各レコードに 分までの集計用カラムを埋め込んでおくのが効率的ですね
お礼
insert するときに集計用カラムを埋め込むことにします。 ありがとうございます。
関連するQ&A
- エクセル関数で、1分単位を15分単位へ変換
アルバイトの勤怠管理をしています。 この度法律に則り、15分単位のまるめを廃止し、1分単位で給与を支払うことになりました。 1分単位の実態と仮に15分単位だった場合とでレイバーを比較したく、、、。 以下のように、1分単位から、15分単位へ関数にて変換することはできるのでしょうか? ----------------------------- ※1分単位⇒15分単位へ変換 【出勤】 8:56⇒9:00へ変換 【退勤】 18:09⇒18:00へ変換 【休憩】 13:11~13:57⇒13:00~14:00へ変換 ----------------------------- 1000件以上のデータがありまして、困っています。 よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- 統計情報について
以下の統計情報ですが、各項目が具体的にわかる資料は何を見たらわかりますか? ちなみに「consistent gets」が多いと重いのかなぁと考えてる程度の知識です。 宜しくお願いします。 ---------------統計情報------------------------ 統計 ---------------------------------------------------------- 187 recursive calls 0 db block gets 176479 consistent gets 63028 physical reads 0 redo size 391 bytes sent via SQL*Net to client 503 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 1 rows processed ---------------統計情報------------------------
- ベストアンサー
- Oracle
- [EXCEL] 時間単位のグラフ作成方法について
掲題の件について、方法がわからず困っております。 ご教示願います。 現在、サーバの稼働統計をパフォーマンスモニタを使用して、CSV出力しました。 レポートは5分毎に取得され、1週間分のレコードがCSVで出力されました。 この結果を、X軸を時間、Y軸をCPU(%Processor Time)のグラフで整理したいと考えております。 現在、時間単位の平均グラフ(棒グラフ)を整理したいと考えております。 前述したように、データは5分単位で出力されているため、そのままでは分単位のグラフになってしまいます。 最終的には、サーバ台数分の同時刻の平均CPU使用率を比較したいと考えています。 DAVERAGEを利用し、別表で整理した結果をグラフのデータとして使用すれば、時間単位の平均をグラフ可能だとは思っていますが、サーバ台数が多く、かなりの時間がかかってしまうため、簡単に時間単位の平均グラフ(棒グラフ)を作成する方法を探しております。 よろしければ、作成方法をご教示願います。
- 締切済み
- その他([技術者向] コンピューター)
- 統計情報の取得=コミットですか?
いつもお世話になっております。 あるシステムの処理で 大量データ挿入⇒統計情報の取得⇒挿入したデータを基にファイル作成 という処理を行っております。 ファイル作成時に失敗した際に、ロールバック処理を行うように 設定しているのですが、既にデータが挿入されてしまっています。 初心者でいまいち統計情報の取得が良く分かっていないのですが、 統計情報を取得するSQL文を流した時点でトランザクションは コミットされるのでしょうか? よろしくお願い致します。
- ベストアンサー
- Oracle
- インターネットでの統計情報の検索について
今私は建築系のコンサル会社で働いています。 それで今『各市町村別』の統計データを集める仕事をしているのですが、なかなか上手にできません。(欲しい統計情報が得られない) とりあえず各都道府県のホームページと総務省(統計情報によっては他の省庁)で検索しています。何かそれ以外に無料で情報を提供してくれるサイトはないでしょうか? もしくは上手な検索方法なんかもあれば教えてください。 ちなみに今私がほしい統計情報は製造品出荷額等、卸売業販売額、小売業販売額、歳入総額、財政力指数 等です。 (ただし、情報はできる限り新しいもので、かならず市町村別でないとダメです) よい情報待っています。
- ベストアンサー
- コンサルティング
- エクセルの時刻入力で、15分単位に変換したい
エクセルにタイムカードの時刻入力をしたいのですが、 経理上の計算は15分単位で行っている為、以下が可能か どうか教えて下さい。 実際の打刻時間(12:17等)を入力して、 経理上の単位(12:15等)に変換させたい。 ご存知の方いらっしゃいましたらご教示下さい。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- PythonでXMLをcsvに変換したいです。
pythonで、特定のファルダにXMLファイルが追加されるたびにCSVファイルを新しく作成してそこに書き込んでいくという事がしたいのですが、なかなかうまくいかず困っています。 下記のようなXMLなのですが、どうしたら良いのでしょうか? <?xml version="1.0" encoding="UTF-8"?> <file format="current_readings" version="1.25" name="test.xml" author="verxxx x.xx"> <base> <serial>563C10SS</serial> <model>XXX-XXXX</model> <name>ABC1</name> <time_diff>540</time_diff> <std_bias>0</std_bias> <dst_bias>0</dst_bias> <time_zone>(UTC+09:00) 大阪、札幌、東京</time_zone> <lan> <input>0</input> <output>0</output> </lan> </base> <group> <num>0</num> <name>Group1</name> <remote> <serial>AAAAAAA1</serial> <model>XXX-NNN</model> <num>1</num> <name>Unit01</name> <rssi repeater="0">5</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">25.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> 2a0f0a605f560== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">61</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> das54f0565== </data> </record> </ch> </remote> <remote> <serial>BBBBBBB1</serial> <model>XXX-NNN</model> <num>2</num> <name>Unit02</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">26.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 54829652hughA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">58</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 481762opjuhgft== </data> </record> </ch> </remote> <remote> <serial>AAABB2</serial> <model>XXX-NNN</model> <num>3</num> <name>Unit03</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">26.5</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 7wTvBPEE8gTxBA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">55</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> f6a72f5aaa== </data> </record> </ch> </remote> </group> </file>
- 締切済み
- SE・インフラ・Webエンジニア
- タイムカードについて知りたいんですが、15分単位なんですがアルバイトや
タイムカードについて知りたいんですが、15分単位なんですがアルバイトやパートで 働いていてタイムカードを押す時は、自分で押すのは当たり前だとおもうんですが、そこの仕事場で一番偉い人が勝手に」押してしまうことがたまにあります。たとえば12時10分に仕事が終わった場合に、15分単位だから、あと5分押すのを待ったりしていると勝手に押される このような場合は文句を言うことはできますか?勝手に押されることにも反論できるんでしょうか? 前にマクドナルドで同じようなことがあって 訴えられたことがあると人から聞いたことがあるので、 自分の場合は会社に言うか迷っています。説明が下手ですいませんが、だれかわかる人がいたら 教えてください。
- ベストアンサー
- その他(ビジネス・キャリア)
お礼
ありがおとうございます。 timeはint型(int(10) unsigned)でUNIX TIMEになっています。。。 この場合の出し方ってありますでしょうか。
補足
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