การรวมข้อมูลและการจัดกลุ่ม

การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

Miller Trujillo

Staff Software Engineer

การรวมข้อมูล: COUNT, SUM, AVG

  • สรุปหลายแถวให้เป็นผลลัพธ์เดียว

  • COUNT: จำนวนแถว

  • SUM: ผลรวมของค่าตัวเลข
  • AVG: ค่าเฉลี่ยของค่าตัวเลข
SELECT COUNT(*) AS total_books,
       AVG(publication_year) AS avg_year
FROM books;
|total_books   |avg_year |
|--------------|---------|
|14            |1999.14  |
การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

GROUP BY สำหรับการสรุปข้อมูล

  • แบ่งแถวเป็นกลุ่มก่อนนำฟังก์ชันรวมข้อมูลไปใช้
SELECT publication_year, COUNT(*) AS books_written
FROM books
GROUP BY publication_year;
| publication_year | books_written |
| ---------------- | ------------- |
| 2017             | 1             |
| 2003             | 1             |
| 1997             | 1             |
| 2018             | 3             |
| 2014             | 1             |
| 1960             | 1             |
การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

GROUP BY ด้วยหลายคอลัมน์

  • จัดกลุ่มด้วยหลายคอลัมน์เพื่อแบ่งข้อมูลละเอียดยิ่งขึ้น
SELECT publication_year, c.name, COUNT(*) AS books_written
FROM books b
LEFT JOIN categories c on c.category_id = b.category_id 
GROUP BY publication_year, c.name;
| publication_year | name             | books_written |
| ---------------- | ---------------- | ------------- |
| 1951             | Fiction          | 1             |
| 1960             | Fiction          | 1             |
| 2018             | Computer Science | 3             |
| 1965             | Science Fiction  | 1             |
| 2010             | Fantasy          | 1             |
| 2003             | Computer Science | 1             |
การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

การกรองกลุ่มด้วย HAVING

  • WHERE กรองแถวก่อนจัดกลุ่ม
  • HAVING กรองกลุ่มหลังการรวมข้อมูล
SELECT publication_year, COUNT(*) AS books_written
FROM books b
GROUP BY publication_year
HAVING COUNT(*) > 2;
| publication_year | books_written |
| ---------------- | ------------- |
| 2018             | 3             |
การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

การรวมข้อมูลและการจัดกลุ่มใน Java

String query = """SELECT publication_year, COUNT(*) AS books_written FROM books b
    GROUP BY publication_year
    HAVING COUNT(*) > ?;""";
try (PreparedStatement pstmt = conn.prepareStatement(query)) {
    pstmt.setInt(1, 2); // filter years with more than 2 books

try (ResultSet rs = pstmt.executeQuery()) { while (rs.next()) { int year = rs.getInt("publication_year"); int count = rs.getInt("books_written"); } } }
| publication_year | books_written |
| ---------------- | ------------- |
| 2018             | 3             |
การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

มาฝึกกันเถอะ!

การคิวรีฐานข้อมูล PostgreSQL ด้วย Java

Preparing Video For Download...