MySQLは複数テーブル関連統計(サブクエリ統計)の例を実装します

MySQLは複数テーブル関連統計(サブクエリ統計)の例を実装します

この記事では、例を使用して、MySQL で複数テーブルの関連統計を実装する方法について説明します。ご参考までに、詳細は以下の通りです。

必要:

各書籍の報酬額の統計、異なる時間の再チャージデータ統計、消費統計、

book テーブル、orders テーブル、reward_log テーブル、consume_log テーブルの 4 つのテーブルを設計し、book_id を通じて book テーブルに関連付けます。

質問:

2 つ以上のテーブルが関連付けられている場合、統計中にデータの重複が発生します。これを検出するにはサブクエリを使用する必要があります。サブクエリは 1 つのフィールドのみを照会できます。ここでは、CONCAT_WS 関数を使用して複数のフィールドを連結します。

成し遂げる:

クエリコードは次のとおりです

選択
入札、
b.書籍名、
合計(IF(o.create_time > 0 &&o.create_time < 9999999999, o.price, 0))today_pay_money,
合計(IF(o.create_time > 0 &&o.create_time < 9999999999, 1, 0))今日の支払い番号、
sum( IF ( o.create_time > 999 && o.create_time < 9999, o.price, 0 ) ) yesterday_pay_money,
合計(IF(o.create_time>999&&o.create_time<9999,1,0))昨日の支払い回数、
sum(o.price) 合計支払金額、
合計(IF(o.create_time > 9999 &&o.create_time < 99999, 1, 0))合計支払回数、
( SELECT SUM( total_score ) FROM book_reward_log WHERE book_id = b.id ) total_score,
(
 選択
 CONCAT_WS(
  ',',
  SUM( IF ( 作成時間 > 0 && 作成時間 < 998, スコア, 0 ) ),
  SUM( IF ( 作成時間 > 9999 && 作成時間 < 99998, スコア, 0 ) ),
  SUM( IF ( 作成時間 > 99999 && 作成時間 < 999998, スコア, 0 ) )
 )
 から
 本の消費ログ
 どこ
 書籍ID = b.id
 ) スコア
 から
 本_本 b
 book_orders o を b.id = o.bid に左結合します
グループ化
 入札

クエリ結果

スコアはコンマで区切られた3つの消費数です

パフォーマンス分析

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例
  • MySQL における複数テーブルの無関係なクエリの実装に関する簡単な説明
  • MySQL 複数テーブル関連クエリの詳細な説明

<<:  JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。

>>:  nginx を介して方向プロキシを実装するプロセスの図

推薦する

MySQL 8.0.11 MacOS 10.13 のインストールと設定方法のグラフィックチュートリアル

MacにMySQLデータベースをインストールし、環境変数を設定する手順を参考までに記録します。具体的...

Centos7 への mysql8.0rpm のインストール チュートリアル

まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...

Windows での MySQL スケジュールバックアップ スクリプトの実装

Windows サーバーでデータベース データを定期的にバックアップする場合は、Windows タス...

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

MySQL8.0.22のインストールと設定(超詳細)参考までに、具体的な内容は次のとおりです。みなさ...

Nginx + consul + upsync を使用して動的負荷分散を実現する方法の詳細な説明

目次前提条件DNSドメイン名解決プロセス外部ネットワークマッピングnginxコア知識nginxとはア...

JavaScript をスリープまたは待機させる方法

目次概要setTimeout() の確認スリープ関数の書き方シンプルな選択ループで実行されますか?要...

JavaScriptはマウスの動きに追従するボックスを実装します

この記事では、マウスの動きを追跡するためのJavaScriptの具体的なコードを参考までに紹介します...

Linux に MySQL 8.0.19 をインストールするための詳細な手順と問題解決方法

最近Tencent Cloudサーバーを購入し、環境を構築しました。このメモは、これまで MySQL...

vue3+threejs を使用して iView 公式サイトのビッグウェーブ特殊効果の例を模倣する

目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...

Vueはアンカー配置機能を実装します

この記事では、アンカー配置を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

ウェブサイトの高速化における CDN、SCDN、DCDN の違いは何ですか?どうやって選ぶ?

1. CDNこれは、Web サイト上で最もよく使用される加速機能です。分散サーバー レイアウトによ...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...