ใช้กลุ่มโดยในหลายคอลัมน์


1035

ฉันเข้าใจประเด็นของ GROUP BY x

แต่มันGROUP BY x, yทำงานอย่างไรและมันหมายความว่าอย่างไร


2
คุณจะไม่พบมันอธิบายว่าเป็นคำถามนี้โพสต์ กลุ่มตามข้อสามารถใช้อย่างน้อยหนึ่งฟิลด์ จำแนกตามลูกค้า; กลุ่มจำแนกตามนามสกุลชื่อ; กลุ่มตามปีร้านค้า sku ฯลฯ
Bill

คำตอบ:


2027

Group By Xหมายถึงใส่ค่าทั้งหมดที่มีค่าเท่ากันสำหรับ X ไว้ในกลุ่มเดียว

Group By X, Yหมายถึงใส่ค่าทั้งหมดที่มีค่าเท่ากันสำหรับทั้ง X และ Y ไว้ในกลุ่มเดียว

เพื่อแสดงให้เห็นถึงการใช้ตัวอย่างสมมติว่าเรามีตารางต่อไปนี้จะทำอย่างไรกับผู้ที่เข้าร่วมสิ่งที่อยู่ในมหาวิทยาลัย:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

เมื่อคุณใช้ a group byในคอลัมน์หัวเรื่องเท่านั้น พูด:

select Subject, Count(*)
from Subject_Selection
group by Subject

คุณจะได้รับสิ่งที่ชอบ:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... เนื่องจากมี 5 รายการสำหรับ ITB001 และ 2 สำหรับ MKB114

ถ้าเรามีgroup byสองคอลัมน์:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

เราจะได้สิ่งนี้:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

เนื่องจากเมื่อเราจัดกลุ่มตามสองคอลัมน์จะมีคำว่า"จัดกลุ่มเพื่อให้ทุกกลุ่มที่มีหัวเรื่องและภาคการศึกษาเดียวกันอยู่ในกลุ่มเดียวกันจากนั้นคำนวณฟังก์ชันการรวมทั้งหมด (จำนวน, ผลรวม, ค่าเฉลี่ย ฯลฯ ) ) สำหรับแต่ละกลุ่มเหล่านั้น" ในตัวอย่างนี้สิ่งนี้แสดงให้เห็นโดยข้อเท็จจริงที่ว่าเมื่อเรานับพวกเขามีสามคนที่ทำ ITB001 ในภาคเรียนที่ 1 และสองคนทำในภาคเรียนที่ 2 ทั้งสองคนที่ทำ MKB114 อยู่ในภาคเรียนที่ 1 ดังนั้นจึงไม่มี แถวสำหรับภาคเรียนที่ 2 (ไม่มีข้อมูลเข้าในกลุ่ม "MKB114, ภาคเรียนที่ 2")

หวังว่ามันสมเหตุสมผล


11
@Smashery: นี่ก็หมายความGROUP BY A,Bเช่นเดียวกันGROUP BY B,Aหรือไม่
tumchaaditya

23
ใช่. ฉันไม่สามารถพูดได้อย่างแน่นอนว่าพวกเขามีประสิทธิภาพเท่ากัน แต่พวกเขาจะให้ผลลัพธ์เดียวกันใช่
Smashery

2
ควรเพิ่มที่นี่ว่ามีความแตกต่างระหว่างGROUP BY a, bและGROUP BY a AND bเนื่องจากรายการที่สองจะแสดงรายการที่จัดกลุ่มเท่านั้นที่มีเนื้อหาเดียวกันและไม่มี "กลุ่ม" ในกรณีนี้การส่งออกจะเหมือนกันเป็นครั้งแรก
Dwza

5
ฉันต้องการเพิ่มว่าลำดับที่คุณจัดกลุ่มตามคอลัมน์ไม่สำคัญ ในกลุ่มตัวอย่างข้างต้นโดยภาคการศึกษาเรื่องจะได้รับผลลัพธ์เดียวกัน
2441441

2
ดีกลุ่มโดย a, b และกลุ่มโดย b, a อย่าส่งคืนผลลัพธ์เดียวกัน - แถวจะแสดงในลำดับที่แตกต่างกัน
แฟน

33

ส่วนGROUP BYคำสั่งจะใช้ร่วมกับฟังก์ชั่นรวมเพื่อจัดกลุ่มชุดผลลัพธ์ตามคอลัมน์อย่างน้อยหนึ่งคอลัมน์ เช่น:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

จำคำสั่งนี้:

1) SELECT (ใช้เพื่อเลือกข้อมูลจากฐานข้อมูล)

2) FROM (ส่วนคำสั่งถูกใช้เพื่อแสดงรายการตาราง)

3) WHERE (ส่วนคำสั่งที่ใช้ในการกรองบันทึก)

4) GROUP BY (ข้อสามารถใช้ในคำสั่ง SELECT เพื่อรวบรวมข้อมูลในหลาย ๆ ระเบียนและจัดกลุ่มผลลัพธ์ตามคอลัมน์หนึ่งคอลัมน์หรือมากกว่า)

5) HAVING (ส่วนคำสั่งถูกใช้ร่วมกับ GROUP BY clause เพื่อ จำกัด กลุ่มของแถวที่ส่งคืนให้เฉพาะกลุ่มที่เงื่อนไขเป็น TRUE)

6) ORDER BY (คีย์เวิร์ดใช้เพื่อเรียงลำดับชุดผลลัพธ์)

คุณสามารถใช้สิ่งเหล่านี้ได้หากคุณใช้ฟังก์ชั่นรวมและนี่คือลำดับที่ต้องตั้งค่ามิฉะนั้นคุณจะได้รับข้อผิดพลาด

ฟังก์ชั่นรวมคือ:

MIN ส่งคืนค่าที่เล็กที่สุดในคอลัมน์ที่กำหนด

SUM ส่งคืนผลรวมของค่าตัวเลขในคอลัมน์ที่กำหนด

AVG ส่งคืนค่าเฉลี่ยของคอลัมน์ที่กำหนด

COUNT ส่งคืนจำนวนค่าทั้งหมดในคอลัมน์ที่กำหนด

COUNT (*) ส่งคืนจำนวนแถวในตาราง


1
แต่เราจะใส่ 2 คอลัมน์ลงไปได้อย่างไรการรวมกันของคอลัมน์ 2 คอลัมน์ขึ้นไปคือคำถาม
Chaitanya Bapat

สวัสดี Chaitanya ฉันไม่ทราบว่านี่คือสิ่งที่คุณถาม แต่ให้ฉันให้คุณตัวอย่างเพียงไม่กี่ หากคุณมีตารางผลิตภัณฑ์ที่คุณใช้ฟังก์ชั่นรวมวิธีนี้ด้านล่างเป็นสองสถานการณ์: SELECT AVG (พร้อมส่ง) จากผลิตภัณฑ์ วิธีนี้จะคำนวณหน่วยเฉลี่ยในสต็อกของตารางผลิตภัณฑ์ ตอนนี้คุณต้องการคำนวณหน่วยในสต็อกตามหมวดหมู่ผลิตภัณฑ์คุณต้องใช้ฟังก์ชั่น AVG กับกลุ่มตามข้อเช่นนี้: SELECT categoryId, AVG (พร้อมส่ง) จากผลิตภัณฑ์ GROUP BY categoryId;
S. Mayol

นี้ไม่ได้จากระยะไกลตอบคำถาม ... คำถามที่นี่คือวิธีการเพื่อให้บรรลุ "ถูกล่ามโซ่การจัดกลุ่ม" ของ "เรื่อง" และ "ภาคการศึกษา" ในเวลาเดียวกันตามที่อธิบายไว้ในตัวอย่างที่กำหนด ...
MahNas92
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.