MySQL 時間統計方法の概要

MySQL 時間統計方法の概要

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

データベース: MySQL

アイデア

時間ディメンションに基づく統計の前提は、データベースに時間情報が保持されている必要があることです。時間を記録するには、MySQL に付属する datetime 型を使用することをお勧めします。

`timestamp` datetime デフォルト NULL、

MySQL で時刻と日付を処理する主な関数は DATE_FORMAT(date,format) です。利用可能なパラメータは次のとおりです

形式説明する
%a曜日の略称
%b月名の省略形
%c月、値
%D英語の接頭辞が付いた月の日
%d月の日付、数値 (00-31)
%e月の日付、数値 (0-31)
%fマイクロ秒
%H営業時間(00-23)
%h営業時間(01-12)
%私営業時間(01-12)
%私分、数値(00~59)
%j年の通算日 (001-366)
%k時間 (0-23)
%l時間(1-12)
%M月名
%m月、数値(00~12)
%p午前または午後
%r時刻、12 時間制 (hh:mm:ss AM または PM)
%S秒 (00-59)
%s秒 (00-59)
%T時間、24 時間 (hh:mm:ss)
%U週(00-53)日曜日は週の最初の日です
%u週(00-53)月曜日は週の最初の日です
%V週 (01-53) 日曜日は週の最初の日で、%X とともに使用されます。
%v週 (01-53) 月曜日は週の最初の日で、%x とともに使用されます。
%W曜日
%w曜日(0=日曜日、6=土曜日)
%X年(日曜日を週の初日とする 4 桁の数字、%V と共に使用)
%x年(月曜日を週の始まりとする 4 桁の数字、%v と共に使用)
%Y年、4桁
%y年、2桁

注意: 日次統計の場合、%j が必要です。%d、%e、%w を使用すると、異なる月/週の同じ値が一緒にカウントされます。

現在の時刻を取得する場合は、now() または sysdate() を使用できます。

SYSDATE() を DUAL から選択します。

DUAL から NOW() を選択;

実際のニーズに応じて、group by クエリを使用できます。

結論<br /> カウントするテーブル構造は次のとおりです。

テーブル `apilog` を作成します (

 `id` int(11) NOT NULL AUTO_INCREMENT,

 `username` varchar(64) デフォルト NULL,

 `action` varchar(64) デフォルト NULL,

 `params` テキスト、

 `結果`テキスト、

 `timestamp` datetime デフォルト NULL、

 主キー (`id`)

)

時間範囲内の異なるカテゴリのアクションの数をカウントします

# 当日のアクションを SELECT します。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;

特定の分類アクションの時間次元の数を数える

# 日別 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')

行動と時間の次元による統計を同時に表示

# 日別 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の例
  • MySQL 8.0 の統計が不正確である理由
  • MySQLの行数カウントに関する簡単な説明
  • 各Mysqlテーブルの行数を正確にカウントする小さなシェルスクリプト
  • MySQLは複数テーブル関連統計(サブクエリ統計)の例を実装します
  • Laravelは、MySQLデータを月、日、時間ごとにカウントする方法を実装します
  • 日、時間、分ごとの連続期間データの sqlserver/mysql 統計 [推奨]
  • 一定期間の日ごと、時間ごとの統計データを取得するMySQLの詳しい説明
  • PHP+MySQL で一定期間内に毎日のデータ統計の最適化操作例を実現
  • PHP 広告クリック統計コード (php+mysql)
  • MySQL統計の概要
  • MySQL カーディナリティ統計の簡単な分析

<<:  CentOS7 に MySQL データベースをインストールしてデバッグする詳細な手順 [例]

>>:  vue-router 履歴モード サーバー側設定プロセス記録

推薦する

JQueryセレクターの詳細な説明

目次基本的なセレクター:レベルセレクター:属性セレクター:フィルターセレクター:フォーム属性セレクタ...

MySQLデータベースを誤って削除した後にデータを回復するための手順

日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...

Linux で SVN サーバーをインストールする方法

1. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...

Oracle VM VirtualBox の CentOS7 オペレーティング システムのインストール チュートリアル図

目次インストール手順環境設定実行構成インストール手順ダウンロードアドレス: バージョン6.0 最初に...

デザイナーが再びハマーの公式サイトに不満を述べる

昨年、この公開書簡は大ヒットし、羅永浩氏を驚かせた。今日、著者が新しい章を発表するとは思ってもみなか...

IIS7 IIS8 http は自動的に HTTPS にジャンプします (ポート 80 はポート 443 にジャンプします)

IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...

Dockerfile を使用して Node.js サービスをデプロイする方法

Dockerfileを初期化するプロジェクトの名前が express であると仮定して、expres...

要素複数フォーム検証の実装

プロジェクトでは、フォーム テストが頻繁に発生します。単一のフォーム テストについては、詳細な紹介が...

MySQL データ挿入最適化メソッドconcurrent_insert

スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...

Vueは大画面ページのスクリーン適応を実現します

この記事では、大画面ページのスクリーンアダプテーションを実現するためのVueの具体的なコードを参考ま...

MySQL 8.0.13 のインストールと設定のグラフィックチュートリアル

Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...

カルーセル効果を実現するためのネイティブJavaScript+CSS

この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...

アクティビティページでの CSS3 アニメーション効果の適用

背景あっという間に忙しい一年が終わり、毎年恒例のイベントの時期がやってきます。お祭り気分を演出するに...

CSSがページのレンダリングをブロックするかどうかについての簡単な説明

おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...

プレフィックスケースを削除する Nginx リバース プロキシ構成のチュートリアル

nginx をリバース プロキシとして使用する場合、リクエストをそのまま次のサービスに転送するだけで...