DB. MySQL 5. グループ化
3772 ワード
グループ関数
リンクテキスト
1. GROUP BY
関数の説明GROP BY条件による統計値の取得
ex1)SELECT Country FROM Customers;
同国同姓
ex 1-1)GROP BYの適用SELECT Country FROM Customers
GROUP BY Country;
ひと塊
ex 2)応用SELECT
ProductID, Quantity
FROM OrderDetails;
上記のデータを同じProductIDでグループ化し、数量値を加算します.
ex 2-1)GROUP BYの適用SELECT
ProductID,
SUM(Quantity) AS QuantitySum
FROM OrderDetails
GROUP BY ProductID
ORDER BY QuantitySum DESC;
ProductIDは同じものを組み合わせて数量値を加算し、カラム名をQuantitySumとし、合計の降順で並べ替えます.
2. WITH ROLLUP
関数説明WITH ROLLUP合計(*ORDER BYとは併用できません)
ex1)SELECT
Country, COUNT(*)
FROM Suppliers
GROUP BY Country
WITH ROLLUP;
国の数とその合計を表示します.
3. HAVING
関数説明HAVINGパケットデータのフィルタリング
ex1)SELECT
Country, COUNT(*) AS Count
FROM Suppliers
GROUP BY Country
HAVING Count >= 3;
表示される値はCountryの3以上です.
*WHEREとHAVINGの違い
WHEREはパケット前にデータをパケット化することができ、HAVINGはパケット後に条件によってデータを抽出することができる.
ex2) WHERESELECT
COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate;
1996−12−31より大きいデータ、すなわち最新のデータは、OrderDate間でグループ化される.
ex2-1) HAVINGSELECT
COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate
HAVING Count > 2;
パケットデータに条件を付けて、2より大きいデータのみを表示します.
4. DISTINCTE
除去関数説明DISTINCTEでの繰返し値
特定のカラムの重複のみを削除します.
GROUP BYより軽いです.
ex1)SELECT DISTINCT CategoryID FROM Products;
*GROUP BYとは異なり、ソートされないため、高速です。
ex2)SELECT COUNT DISTINCT CategoryId
FROM Products;
GROUP BYとは異なり、統計関数とは併用されません。
ex 3)GROUP BYとの併用SELECT
Country,
CITY
FROM Customers
ORDER BY Country;
現在のCustomersテーブルのColumCountry、CITYのデータ値です.
ex 3-1)GROUP BYを使用SELECT
Country,
COUNT(CITY)
FROM Customers
GROUP BY Country;
GROUP BYでCountryを重複せずに組み合わせた後、CITYの数を見ると、アルゼンチンのCITYの数は3です.
ex 3-2)DISTINCT使用SELECT
Country,
COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;
CITYの価格は重複して削除され、アルゼンチンのCITYの数は1です.
Reference
この問題について(DB. MySQL 5. グループ化), 我々は、より多くの情報をここで見つけました
https://velog.io/@jinzza456/DB.-MySQL-5.-그룹-나누기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
SELECT Country FROM Customers;
SELECT Country FROM Customers
GROUP BY Country;
SELECT
ProductID, Quantity
FROM OrderDetails;
SELECT
ProductID,
SUM(Quantity) AS QuantitySum
FROM OrderDetails
GROUP BY ProductID
ORDER BY QuantitySum DESC;
SELECT
Country, COUNT(*)
FROM Suppliers
GROUP BY Country
WITH ROLLUP;
SELECT
Country, COUNT(*) AS Count
FROM Suppliers
GROUP BY Country
HAVING Count >= 3;
SELECT
COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate;
SELECT
COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate
HAVING Count > 2;
SELECT DISTINCT CategoryID FROM Products;
SELECT COUNT DISTINCT CategoryId
FROM Products;
SELECT
Country,
CITY
FROM Customers
ORDER BY Country;
SELECT
Country,
COUNT(CITY)
FROM Customers
GROUP BY Country;
SELECT
Country,
COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;
Reference
この問題について(DB. MySQL 5. グループ化), 我々は、より多くの情報をここで見つけました https://velog.io/@jinzza456/DB.-MySQL-5.-그룹-나누기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol