使用状況分析を備えたMySQL

使用状況分析を備えたMySQL

持つことの使用法

having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます。また、where 句は集計前にレコードをフィルター処理します。つまり、group by 句と having 句の前に機能します。 having 句は、集計後にグループ レコードをフィルター処理します。

SQLの例:

1.各地域の総人口と総面積を表示します。

SELECT 地域、SUM(人口)、SUM(面積) FROM bbc GROUP BY 地域

まず、region を使用して、返されたレコードを複数のグループに分割します。これが GROUP BY の文字通りの意味です。グループが形成された後、集計関数を使用して、各グループ (1 つ以上のレコード) 内の異なるフィールドを操作します。

2. 各地域の総人口と総面積を表示します。面積が 1,000,000 を超える地域のみが表示されます。

地域、SUM(人口)、SUM(面積) を選択
BBCより
地域別にグループ化
合計(面積)>1000000

ここでは、そのようなレコードがテーブルに存在しないため、where を使用して 1,000,000 を超える地域をフィルターすることはできません。

逆に、having節を使用すると、グループ化後にデータのグループをフィルタリングすることができます。

MySQL はフィールドの長さを決定します。

char_length(trim(home_page))<10かつchar_length(trim(home_page))>1となるaaaテーブルからhome_pageを選択します。

MySQL の where 句と having 句の違い

MySQL の where 句と having 句はどちらもレコードをフィルタリングできますが、使用方法にはいくつかの違いがあります。例を見てみましょう。

一意のレコードを見つけるには、group by 句と having 句を使用します。SQL は次のとおりです。

`edm_user081217` GROUP BY email から uid、email、count(*) を ct として選択します。

これを見ると簡単に理解できます

`edm_user081217` から uid、email、count(*) を ct として選択し、email でグループ化して ct > 1 にします。

まず、group by を使用して電子メールをグループ化し、次に、having を使用して 1 より大きい値を持つ電子メールをフィルター処理し、重複レコードのみが見つかるようにします。

「having」と「where」の違いは次のとおりです。

SELECT city FROM weather WHERE temp_lo = (SELECT max(temp_lo) FROM weather);

行為の対象が異なります。 WHERE 句はテーブルとビューに適用され、HAVING 句はグループに適用されます。

WHERE はグループ化と集計の前に入力行を選択します (したがって、集計計算に含まれる行を制御します)。一方、HAVING はグループ化と集計の後にグループ化された行を選択します。したがって、WHERE 句には集計関数を含めることはできません。集計関数を使用して集計操作に入力する行を決定するのは意味がありません。 対照的に、HAVING 句には常に集計関数が含まれます。 (厳密に言えば、集計を使用せずに HAVING 句を記述することもできますが、そうするのは労力の無駄です。同じ条件を WHERE フェーズでより効率的に使用できます。)

前の例では、集約を必要としないため、WHERE で都市名の制限を適用できます。 これは、WHERE チェックに失敗した行のグループ化と集計の計算を回避するため、HAVING に制限を追加するよりも効率的です。

要約すれば:

通常は group by の後に続き、レコード グループ選択の一部として機能します。

すべてのデータを処理するには、ここで実行されます。

さらに、sum(qty)>1000などの集計関数を使用することもできます。

要約する

上記は、編集者が紹介した mysql の使い方の分析です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQLデータベースでの使用に関する簡単な説明
  • Mysql EXPLAINはファイルソートの紹介を使用しています
  • MySQL での group by と having together の使用に関する注意事項
  • MySql の having 句を使用してグループ レコードをフィルター処理する手順
  • MySQL の order by、group by、having の違いを詳細に分析します。
  • MySQL で GROUP BY を使用せずに HAVING ステートメントを直接使用する問題の調査
  • MySQL が GROUP BY なしで HAVING を直接実行すると空を返す問題の分析
  • サンプルコードを持つMySQLグループ
  • MySQL における USING と HAVING の使用法の簡単な分析

<<:  CocosCreator 入門チュートリアル: TS で初めてのゲームを作る

>>:  Docker での環境変数の使用とよくある問題の解決策

推薦する

Centos6.6 で php7 + nginx 環境をインストールする方法

この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...

M1 チップに MySQL 8.0 データベースをインストールする方法 (画像とテキスト)

1. ダウンロードまず、MySQLの国内ミラーをお勧めします。特に速いわけではありませんが、それで...

Mysqlアカウント管理の原理と実装方法の詳細な説明

この記事では、例を使用して、MySQL アカウント管理の原則と実装方法を説明します。ご参考までに、詳...

MySQL 8.0.20 Window10無料インストール版設定とNavicat管理チュートリアルグラフィック詳細説明

1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...

Reactの原理の説明

目次1. setState() の説明1.1 データの更新1.2 推奨構文1.3 2番目のパラメータ...

MySQL データベース データのロード 複数の用途

目次MySQL Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...

MySQL 4.1/5.0/5.1/5.5/5.6の主な違い

バージョン間でのコマンドの違い: innodb ステータスを表示\G mysql-5.1 エンジン ...

JavaScriptを使用して独自のAjax関数を定義する

ネイティブJSによって開始されたネットワークリクエストは、クエリ文字列の形でサーバーに送信されるため...

SQLインジェクションの詳しい解説 - セキュリティ編(第2部)

この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...

MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...

js QRコードスキャンログインの原理についての簡単な説明

目次QRコードログインの真髄QRコードを理解するシステム認証メカニズムQRコードをスキャンしてログイ...

Nginxを使ってサーバー内で複数コンテナの共存を実現する方法

背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...

MySQL 空間データストレージと関数

目次1. データ型1. MySQL空間データとは何か2. GeoJSONとは3. 空間データ型のフォ...

MySQL で 2 つのデータベース テーブル構造を比較する方法

開発およびデバッグのプロセスでは、新しいコードと古いコードの違いを比較する必要があります。比較には、...

MySQL InnoDB トランザクション ロック ソースコード分析

目次1. ロックとラッチ2. 繰り返し読み取り3. インサートロックプロセス3.1 ロックモード3....