MySQLのグループ化機能MAX、クエリ接続BY集計関数GROUP

それにあったものの練習のためのテーブルを見てみましょう。

SELECT  *  FROMショップORDER  BY 記事。

+ - ------- + -------- + ------- + 
| 記事| ディーラー| 価格| 
+ - ------- + -------- + ------- + 
|        1  | |   3.45  | 
|        1  | B       |   3.99  | 
|        2  | |  10.99  | 
|        3  | B       |   1.45  | 
|        3  |C       |   1.69  | 
|        3  | D       |   1.25  | 
|        4  | D       |  19.95  | 
+ - ------- + -------- + ------- +

 

  • 価格(価格)最も高価な品を探します:

方法A:最大値MAX関数重合を選択します

SELECT  MAX(価格)FROM店。

 

方法2:最初の行のみを表示するように、「LIMIT 1」をソートすることによってORDER

SELECT 記事、ディーラー、価格
 FROM ショップ
 ORDER  BY価格DESCを
LIMIT 1 ;

 

方法3:左の接続を使用します

SELECT s1.article、s1.dealer、s1.priceを
 FROM 店S1
 LEFT  JOINの店S2をON s1.price < s2.price
 WHERE s2.articleはIS  NULL ;

 

  • の各記事の最高価格を検索します。

最大値MAX関数、GROUP BYを持つ記事へのパケットを選択します。

集約関数によって以下の重合性官能基と機能を使用した場合、グループ化されたグループは、フィールドを変更することはできません。例えば、次の物品がGROUP BYである場合SELECT MAX()は、物品はできません。

SELECT記事、MAX(価格)AS価格FROM    ショップ
 GROUP  BY記事ORDER  BY記事。

 

私たちは、物品、ディーラー、MAX(価格)、だけではない最大パケット記事を、計算を選択したい場合はGROUP BYでの集計関数を使用することで、弱点を持っています。

注意:SQL文だけの記事BYバック次GROUPを。

SELECT記事、ディーラー、MAX(価格)AS価格FROM ショップ
 GROUP  BY記事ORDER  BY記事。

次の文は正しいですが、唯一の最大値を求めて、物品のグループ化に合わせて目標を達成できませんでした。

SELECT記事、ディーラー、MAX(価格)AS価格FROM ショップ
 GROUP  BY記事、ディーラーORDER  BY記事。

 

GROUP BYと集計関数は、クエリが大きい名声のタイミングに接続されていることができません。

ここにあなたの内部の接続出演です。EnはINNER JOINをされ、あなたはINNERを書き込むことはできません。

同じ要求:それぞれの記事のために、最高の価格を見つけます。

エン

SELECT  s1.article、ディーラー、s1.price
FROM
ショップs1を 登録しようSELECT記事を、MAX(価格)AS 価格 FROM ショップ GROUP BY記事)AS s2を ON s1.article = s2.article AND s1.price = s2.price ORDER BY記事;

 

左の接続は(LEFT JOINを)も、この目標を達成することができます。

SELECT s1.article、s1.dealer、s1.priceを
 FROM 店S1
 LEFT  JOINのショップS2 ON s1.article = s2.articleをAND s1.price < s2.price
 WHERE s2.articleはIS  NULL 
ORDER  BY s1.article。

 

リファレンス接続

MySQLの公式サイト

https://dev.mysql.com/doc/refman/8.0/en/example-maximum-column-group-row.html

おすすめ

転載: www.cnblogs.com/majestyking/p/11260022.html