MySQL は GROUP BY
        の使用を拡張し、GROUP BY
        句には現れない SELECT
        リストでの、超集約カラムまたは計算の使用を可能にします。この機能を利用して、不要なカラムのソートやグループ分けを避けることで、性能を改善することができます。例えば、次のクエリでは、customer.name
        のグループ分けをする必要がありません :
      
SELECT order.custid, customer.name, MAX(payments) FROM order,customer WHERE order.custid = customer.custid GROUP BY order.custid;
        標準 SQL では、GROUP BY 句に
        customer.name
        を加える必要があります。MySQL
        では、この名前は二重化しています。
      
        GROUP BY
        部から省略したカラムがグループ内で一定していない場合は、この機能を
        使用しないで
        ください。サーバはいかなる値もグループから自由に戻すことができ、すべての値が同じでない限り、結果は不確定です。
      
        同様の MySQL 拡張機能が HAVING
        句に適用されます。SQL の基準では、GROUP
        BY
        句で検出されないカラムで、集約関数で囲まれていないものを、
        HAVING
        句で名付けることはできません。MySQL
        では、それらのカラムで計算を簡易化することができます。この拡張は、グループ分けされていないカラムが、同じグループに関する値を持っていることを前提としています。それ以外では、結果は不確実になります。
      
        ONLY_FULL_GROUP_BY SQL
        モードが有効になっている場合、GROUP
        BY への MySQL
        拡張は適用されません。これは、GROUP
        BY
        句で名付けられていないカラムは、集約関数で使用されていない場合、SELECT
        リスト、または HAVING
        句で利用することができません。
      
        選択リストの拡張も、ORDER BY
        に適用できます。つまり、GROUP BY
        句に表れない ORDER BY
        句の非集約カラムまたは計算を使用することができます。この拡張は、ONLY_FULL_GROUP_BY
        SQL
        モードが有効になっている時は適用しません。
      
        いくつかのケースでは、MIN()
        および MAX()
        を使用して、ユニークなもの意外でも特定のカラム値を取得することができます。次の例は、sort
        カラムでの最小値を含む行からの
        column の値を与えます :
      
SUBSTR(MIN(CONCAT(RPAD(sort,6,' '),column)),7)
The Rows Holding the Group-wise Maximum of a Certain Field 参照。
        標準 SQL に準じる場合は、GROUP BY
        句で式を使用することはできないのでご注意ください。式にエイリアスを使用することで、この制限を回避することが可能です
        :
      
SELECT id,FLOOR(value/100) AS val
  FROM tbl_name
  GROUP BY id, val;
        MySQL は GROUP BY
        句での式の使用を許可していません。例 :
      
SELECT id,FLOOR(value/100)
  FROM tbl_name
  GROUP BY id, FLOOR(value/100);
