ホームページ  >  記事  >  データベース  >  MySQL はデータを要約してグループ化します

MySQL はデータを要約してグループ化します

大家讲道理
大家讲道理オリジナル
2017-08-19 10:42:181565ブラウズ

データの要約とグループ化

クエリステートメント ---> 結果セット (複数のデータ) ---> 単一行レコード

1.集計関数: 指定された列の空でないすべての値に対する字合計 () の数値と、指定された列内の空でないすべての値に対する

AVG () の数値

Min ()、文字、日時の戻り値指定された列内の指定された列 最小の数値、最も古い日付、または最小の文字列

max() 数値、文字、日時 指定された列内の最大の数値、最新の日付、または最大の文字セットを返します

count() 任意の行-ベースのデータ型 統計結果 すべてのレコードの行数を収集します

例: プレーヤーテーブルにプレーヤーが何人いるかをクエリします

ユーザーからカウント (user_qq) を選択します

ユーザーからカウント (*) を選択します

例: QQ番号が12301であるプレイヤーの試合の合計スコアを問い合わせます

user_qq='12301'のスコアから「合計スコア」としてsum(score)を選択します

例: QQ番号が12302であるプレイヤーの評価スコアを問い合わせます

user_qq='12302' のスコアから avg(score) を「平均スコア」として選択します

例: ゲーム番号 1 の最高スコアをクエリします

gno=1 のスコアから max(score) を「最高スコア」として選択します

例: QQ番号が12302のプレーヤーをクエリします 合計スコア、平均スコア、最大スコア

sum(スコア)を「合計スコア」、avg(スコア)を「平均スコア」、max(スコア)を「最高点」として選択しますuser_qq ='12302' のスコアからスコア'を取得します

2. GROUP BY を使用してグループ化します

例: 各プレーヤーの合計スコア、平均スコア、最大スコアをクエリします

「合計スコア」として sum(score) を選択します',avg(score) として '平均スコア'、max (スコア) として '最高スコア' を user_qq ごとにグループ化したスコアから

例: 各プレーヤーの平均スコアをクエリし、プレーヤーの QQ 番号と平均スコアを表示します

select user_qq, avg(score) を user_qq ごとにグループ化した「平均スコア」として

3. グループの結果をフィルターする

GROUP BY 句を使用する場合、HAVING 句を使用してグループ統計の統計条件をさらに設定できます。 HAVING 句と GROUP BY 句の関係は WHERE 句と SELECT に相当します

句の関係と WHERE 句の違いは、HA​​VING 句では集計関数の統計結果がフィルタリングとして使用されることです状態。

例: 平均スコアが 4000 を超えるプレイヤーの QQ 番号、合計スコア、平均スコアをクエリします

select user_qq, sum(score) を「合計スコア」として、avg(スコア) を「平均スコア」としてスコアから選択しますavg (スコア) > 4000 を持つ user_qq でグループ化します

例: すべてのユーザーの平均スコアと合計スコアをクエリし、平均スコアの逆順に並べ替えます

「平均スコア」として user_qq,avg(score) を選択します。 sun(score) as '合計スコア' ' from スコア group by user_qq orde by avg(score) desc

4. SELECT ステートメントの実行順序

from 句はデータソースを指定します

where 句はフィルターします指定された条件に基づいてレコードを取得します

Group by sub センテンスは、データを複数のグループに分割するために使用されます

計算には集計関数を使用します

グループをフィルタリングするには、having 句を使用します

order by 句を使用して、結果セットを並べ替えます

2 つの結合クエリ

1. マルチテーブル接続例: スコア情報をクエリし、プレイヤーのニックネーム、ゲーム名とスコアを表示

「ニックネーム」として user_name、「ゲーム名」としてゲームを選択users.user_qq =scores.user_qq および game .gno=scores.gno の 'score' として

結合クエリは内部結合と外部結合に分割されます

内部結合の特徴: 接続された 2 つのテーブルは等しいステータスになります

あるテーブルにもう一方のテーブルに対応するデータがない場合、接続は行われません。この接続メソッドは内部接続に属しており、内部接続形式を表示します。 table1 から色を選択 [内部] table1.col = table2 に table2 を結合 .clo1

の例: スコア情報をクエリし、プレイヤーのニックネーム、ゲーム名、スコアを表示

select user_name as 'nickname', g_name as 'game name' 、games.gno のゲーム内部結合スコアの「スコア」としてスコア = スコア. _qq=user.user_qq

玩具例: 各プレイヤーのニックネーム、合計スコア、平均スコアを確認します

SELECT User_name as 'Nickname', SUM (SCORE) AS 'Total Society', AVG (SCORE) AS 'Average' FROM USERS U Inner Join Scores s s.user_qq = u.user_qqグループselect user_name as 'nickname'、sum(score)as 'total score' as 'avg(score)as users u inern uint s scores s s.user_qq = u .user_qq グループ化;3500 order by avg(score) desc

外部結合は左外部結合と右外部結合に分かれます

外部結合の特徴: 接続されている2つのテーブルの状態が等しくなく、実表が存在します

データは、別のテーブルに一致するデータがない場合でも、NULL で完了する必要があります。 - ” ” ” このテーブルは「左のテーブル」であり、後で表示されるテーブルが「右側のテーブル」です

外部結合形式: SELECT COL_LIST FROM TABLE1 LEFT/RIGHT[OUTER] JOIN TABLE2 ON TABLE1.COL=TABLE2.COL

例: 全プレイヤーの情報をクエリする 試合のスコア情報No. 5

user_name を「ニックネーム」として選択し、gno を「ゲーム番号」として選択し、ユーザーからのスコアを「スコア」として選択します U は、スコア S を U.user_qq=S.user_qq と S.gno=5 に結合します

以上がMySQL はデータを要約してグループ化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。