2017-09-20 4 views
1

私は本当にSQLに慣れています。私と一緒に頑張ってください。 WebホストにMYSqlデータベースがあり、XMLファイルを読み込んでxmlのデータをmysqlテーブルに保存するPHPスクリプトを作成しました。
PHPスクリプトは、これを実行すると、すべてのレコードをtimestampというフィールドでタイムスタンプします(タイプはdatetimeに設定されています)。このスクリプトは1秒に1回読み込み挿入されます。
処理時間、インターネットの輻輳などのため、毎秒1回の記録を記録するとは限りません。平均して何秒で、それが逃しているかを知りたい。挿入されるデータのタイミングを解読する必要があります

ここに質問があります...
SQLコードでは「毎分の平均秒数は何ですか?」という質問があります。またはPHPやその他のコードで処理する必要がありますか?

おかげ

EDIT:「?毎分のうち、私は2番目の基礎であり、時間または何、これまでの割合の84%を第二に、この情報を記録することに成功しています」私が知りたいのですが このパーセンテージはSQLコードで簡単に決めることができますか、またはデータベースからデータを抽出し、PHPなどのスクリプトで処理する必要がありますか?

答えて

-1

用途:

SELECT CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp)) AS minute, 
COUNT(*) AS count 
FROM your_table_name 
GROUP BY CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp)); 

説明:

CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp))は分単位でグループ化するレコードを取得する空想の方法です。 timestampにはDATE(YYYY-MM-DD)、HOURおよびMINUTE(HH:MM)の各コンポーネントがあります。この行は、単にそれらの部分を抽出します。 CONCATはそれらをまとめて1つのフィールドを形成します。全体の効果は、フィールドの秒部分を切り捨てることです。

COUNT(*)は、グループ内のすべてのレコードをカウントアップする集計関数です。あなたが分で 'ヒット'の%として終了数を望むなら、あなたは使用することができます。

COUNT(*)/60 AS count 

または

COUNT(*)/60 * 100 AS count 

ここで魔法COUNTSELECTと同じグループで動作するように指示しGROUP BY、である - それらを1分のグループにすべてのシングルレコードをグループ化し、可能数えられる。

+0

私は非常に興味があり、このことを学びます。あなたは上記のコードが何をしているか説明していただけますか?ありがとう – jreckart

+0

@jreckartそこにある各機能は、MySQLのドキュメントで簡単に調べています。あなたはそうするべきです。 – ceejayoz

関連する問題