SQLの基本 - 要約統計量とGROUP BY

まず、要約統計

図1に示すように、集約関数

COUNTは、()の合計数を算出
SUM()合計
MAX()は最大値
MIN()は最小
平均値AVG()


使用2、集約関数

学生の総数?
SELECT(COUNT * 学生からの); 

すべての学生のための和数学?
SELECT SUM学生FROM(スコア); 

数学の最高スコアのすべての学生?
学生FROM MAX(スコア)を選択し、

数学のすべての学生が最低のスコア?
学生FROM MIN(スコア)を選択し、

数学の平均ですべての学生?
学生FROM AVG SELECT(スコア); 


### 
学生の数?
    SELECT(COUNT学生* FROM); 219 

別の方法:
    学生FROM SELECT COUNT(スコア);         219 
    SELECT COUNT(STUDENT_ID)学生FROM;     219 
    SELECT COUNT( 1)学生FROM; 219 
    SELECT COUNT( 'ABC')FROM学生; 219
    学生からの選択(teacher_id)をCOUNT;     205 

    COUNT(teacher_id)NULL値の行を無視し、

同じ行がNULL値では無視されます:
    SELECT MAX(音楽)スチューデントFROM; 
    SELECT MIN(音楽)スチューデントFROM; 
    SELECT SUM(スコア)学生FROM; 
    SELECT AVG(スコア)学生FROM; 


COUNT( *)とCOUNT(1 )の比較:
    あなたのテーブルに主キーがない場合、COUNT( 1)COUNTより(* )の高速
    主キー、主キーが(存在する場合数(以下、カウントの条件として主キー) *は)速くすることが
    あなたのテーブルが一つだけのフィールドを持っている場合、それは(カウント、 * )友人の最速です
    (COUNT両方*)数を比較(1)。主に(1カウントに対応するデータフィールドから)。
    (COUNT場合 1)は、ポリ指数、IDです、それは確かに(1カウントされる)速いです。しかし、違いは非常に小さいです。
    (カウントので、*)、自動的にそのフィールドに指定された最適化します。だから、必要がカウントしないように(?)、COUNT(*で)、あなたはSQLの最適化を完了するのに役立ちます。

AVG(スコア)がSUM(スコア)に相当する / COUNT(音楽)


3、グループの要約統計

キーワード:GROUP BY 

、など:
    異なるクラスの結果を比較するために、(あまりにも多くの学生は、学年にここで80点以下を最初の学生を数えていないので)どのようにそれぞれの数学のクラスの平均値を取得するには?

    SELECT、AVG(スコア)学生スコアFROM CLASS_ID > 80 CLASS_ID BY基; :集約関数のリターンを使用することに加えてSELECTフィールド、他のすべてのフィールドを、それらがGROUP BYの後に現れなければならないように。


画像

たとえば、次のように
    異なる取引所の合計購入金額のどの統計?

    SELECT(stock_code、左 2)、SUM(。価格* ボリューム)
    t_stock_trans_dtl FROM 
    WHERE opt_typ =「買い」
    左BY GROUP(stock_code、 2 ); 


例:
    取引の異なる種類の異なる取引所の総取引金額のどの統計?
    パケット番号の複数のフィールド
    SELECT左(stock_code、 価格* 2)、opt_typ、SUM 巻)
    FROM t_stock_trans_dtl 
    左(stock_code、BY GROUP 2 )、opt_typ; 


行は、統計計算の同じセットに割り当てられたNULL値GROUP BY、あろう値; 

SELECT teacher_id、COUNT( * 
学生FROM 
teacher_id BY GROUP。


第二に、要約統計

図1に示すように、パケットフィルタリング結果

キーワード:+ BY GROUP HAVING 
条件を指定することにより、グループに使用される特定のキーワードを備えた、

比較および場所:を有する
    HAVING:GROUP BYの後に行うパケットフィルタリング、; 
    :行フィルタリングがGROUP BYの前に行われる; 


例:
    方法教授は、教師の15以上の科学的な名前を取得しましたか?

    SELECT、COUNT(Teacher_id *は
    学生FROM 
    GROUP BYはteacher_id 
    HAVING COUNT( *)> 15 ; 

例:
    どのように数学のクラスと70ポイント以上の平均スコアを取得するには?

    SELECT 
    CLASS_ID、AVG(音楽)
    スチューデントFROM 
    GROUP BYがCLASS_ID 
    HAVING AVG(スコア) > = 70。


2、パケットのソート結果

例:
    どのように、各クラスの平均(数学で80点以下の学生を除く)で数学のスコアを取得し、その後、平均値を降順にソート?

    キーワード:GROUP  BY  +  ORDER  BY 
    
    #は、最初の場所を実行します、そして、注文することによって
    SELECT 
    CLASS_ID、AVG (スコア)
     FROM 学生
     WHEREスコア>  80は、
    GROUP  BYがCLASS_ID
     ORDERを BY  AVG(スコア)DESC ; 


あなたはすべてのクエリを決定したい場合結果を並べ替えるには、ORDERを使用する必要がありBY


3、SELECT句の順序

画像


最も単純なSQL文:

SELECT  1 ;

おすすめ

転載: www.cnblogs.com/weiyiming007/p/11430384.html