MySQLの時間別統計手法の紹介(コード例)

不言
リリース: 2019-02-01 10:14:39
転載
2388 人が閲覧しました

この記事では、MySQL の時間別統計データの取得方法 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。あなたを助けます。

データベース統計を行う場合、多くの場合、年、月、日に基づいてデータをカウントし、echarts を使用して視覚化効果を作成する必要があります。

思考

  • 時間ディメンションに従って統計を作成するための前提条件は、データベースに保持時間情報が必要であることです。MySQL に付属の datetime タイプを使用することをお勧めします。 時間を記録します。

`timestamp` datetime DEFAULT NULL,
ログイン後にコピー
  • MySQL で時刻と日付を処理する主な関数は DATE_FORMAT(date,format) です。使用可能なパラメータは次のとおりです。

##%D英語の接頭辞が付いた月の日付##%d%e##%fマイクロ秒%H時間 (00-23) %h時間(01-12)%I時間(01-12)%i分、値 (00-59)%j日 (001-366)%k時間(0-23)%l時間(1-12) )%M月の名前%m月、値 (00-12) )%pAM または PM%r時間、12 時間 ( hh:mm: ss AM または PM) %S 秒 (00-59)%s秒(00-59)%T時間、24 時間 (hh:mm:ss)week(00-53) 日曜日は週の最初の日ですweek(00 -53) 月曜日は週の最初の日ですweek(01-53) 日曜日は週の最初の日です。 を使用します。 週 (01-53) 月曜日は週の最初の日で、%x は ## を使用します#%W週名%w曜日 (0=日曜日、6=土曜日)% 年は週の最初の日の 4 桁で、%v は %Y年、4 桁 %y 年、2 桁 注 %j を使用する必要があり、%d、%e、%w現在時刻の取得が含まれます。now()
Format Description
%a 週の短縮名
%b 月の短縮名
%c 月、値
月の日、数値 (00-31)
月の日、数値 (0-31)
#%U
%u
%V
with %X %v
を使用します。
: 毎日の統計については、 、
を使用すると、異なる月/週の同じ値が一緒にカウントされます。
または

sysdate() を通じて取得できます。

SELECT SYSDATE() FROM DUAL;
SELECT NOW() FROM DUAL;
ログイン後にコピー
実際のニーズに応じてクエリを実行するには、
    group by
  • を使用してください。

    結論

    カウントされるテーブルの構造は次のとおりです:
CREATE TABLE `apilog` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(64) DEFAULT NULL,
  `action` varchar(64) DEFAULT NULL,
  `params` text,
  `result` text,
  `timestamp` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)
ログイン後にコピー
  • 統計時間範囲内のさまざまなカテゴリ

    action

    # 当日
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%j') = DATE_FORMAT(now(),'%j') ORDER BY count desc;
    # 当周
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc;
    # 当月
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc;
    # 当年
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc;
    ログイン後にコピー
統計の数 特定のカテゴリの時間ディメンションの数

action

# 按日
SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%j')
# 按周
SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%u')
# 按月
SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%m')
# 按年
SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%Y')
ログイン後にコピー
Press
    action
  • と時間ディメンションの同時統計

    # 按日
    SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%j')
    # 按周
    SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%u')
    # 按月
    SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%m')
    # 按年
    SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%Y')
    ログイン後にコピー
    上記は、より一般的に使用される時間統計です。その他の時間ディメンションについては、同様の処理に関する上記のパラメータ表を参照してください。 。

以上がMySQLの時間別統計手法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート