mysql:14104
From: "F.Y" <"F.Y" <fumi_sby@xxxxxxxxxx>>
Date: Mon, 9 Jul 2007 21:55:36 +0900 (JST)
Subject: [mysql 14104] Re: ログのカウント方法
3.23時代からずっと下記の書き方をしてるけど、遅いと思ったことはないぞ。 select 狩人, sum(if(標的 = '兎', 1, 0)), sum(if(標的 = '狐', 1, 0) from 成果 group by 狩人 order by 狩人; --- Hisamitsu Issei <ds1i-hsmt@xxxxxxxxxx> wrote: > 久光です > > > > > (2)count関数中にcase式を入れて、一度で複数の日付の範囲を > > 集計できるようにしま > > す。 > > > count(case when dt between '2007-03-01 00:00:00' and '2007-03-31 > > > 23:59:59' then 1 else null end) as a1, > > > from material left join log_mate on material.id=log_mate.mate_id > > and dt between '2007-1-31 0:0:0' and '2007-7-31 23:59:59' group > by > > id,name order by id,name ; > > > ・CASEを使って条件に合うものを別個に集計する方法 > ・FROMの中に日付の絞り込みも入れてしまう方法 > > CASEはここで使えることが思いつかなかったです。言われてみ > れば使えま > すねコレが。FROMにいたってはこんな形で絞り込む条件が入れら > れるとは知 > りませんでした。 > > で、さっそく試してみたのですが、3時間ほど計算しても実行 > 結果が返っ > てこなかったです。SQL文が間違ってたのかと思い、あれやこれ > や試したん > ですが全然実行結果が返ってこず。 > ログファイルが大きすぎるのかもしれないと思って、79万行あ > るデータを > 今年の6月30日〜7月1日の2日間だけの > 2600行に減らして、さらにSQL文を下 > 記のように単純にしたところ > > SELECT > material.id, > COUNT( > CASE WHEN log_mate.datetime > BETWEEN '2007-06-30 00:00:00' > AND '2007-06-30 23:59:59' > THEN 1 > ELSE NULL > END ) AS a1 > FROM material > LEFT JOIN log_mate ON material.id = log_mate.mate_id > AND test.datetime > BETWEEN '2007-6-29 0:0:0' > AND '2007-7-1 23:59:59' > GROUP BY material.id > ORDER BY material.id > > 130秒くらいでようやく実行結果が返ってきました。結果は私 > が欲しがっ > ていたとおり、利用がなければ「0」が返ってくる部品一覧表に > なっていま > した。すごいです。ありがとうございました。 > > こんどの問題は実行時間が非常に長い点です。自分のパソコン > (CoreDuo > 2GHz)の処理能力がひどく劣っているとも思えないし、でもSQL > 文はちゃん > と動作することがわかったので、まずは気長に一晩くらい回しっぱなし > にし > てみます。EXCELにペタペタ貼付けてエッサホッサと行のずれを > 揃える仕事 > を考えれば、一晩ほっといて結果一覧がでる方がかなり効率的なので。 > > あとはSQL一発ってわけにはいかないけどテンポラリー・テー > ブルを組み > 合わせる方法も現実的な速度でPHPを使わずに一覧表が作れるか > もしれない > と考えてます。 > > なんにせよおかげさまで進歩しました。ありがとうございます。 > > > ================================= > == HISAMITSU ISSEI == > == DS1I-HSMT@xxxxxxxxxx == > http://www.ne.jp/asahi/pro/his/ > ================================= > > > -------------------------------------- Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar http://pr.mail.yahoo.co.jp/toolbar/
14100 2007-07-08 16:41 [Hisamitsu Issei <ds1] ログのカウント方法 14101 2007-07-08 19:04 ┣["F.Y" <fumi_sby@xxxx] 14102 2007-07-08 21:14 ┗[忠犬 KEN公 <ken_ken_] @ 14103 2007-07-09 21:19 ┗[Hisamitsu Issei <ds1] -> 14104 2007-07-09 21:55 ┣["F.Y" <fumi_sby@xxxx] 14106 2007-07-10 11:35 ┗[hama <smilestyle55@x]