ホームページ >データベース >mysql チュートリアル >MySQL はデータを要約してグループ化します
データの要約とグループ化
クエリステートメント ---> 結果セット (複数のデータ) ---> 単一行レコード
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 句の違いは、HAVING 句では集計関数の統計結果がフィルタリングとして使用されることです状態。
例: 平均スコアが 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 サイトの他の関連記事を参照してください。