Với các kiến thức bài trước thì câu lệnh câu lệnh truy vấn cũng đã được hỗ trợ khá nhiều thứ như IN/EXISTS, LIKE, UNION và JOIN. Thì ở phần bài hôm nay, chúng ta cùng tiếp tục tìm hiểu các khái niệm khác, cũng sẽ hỗ trợ nhiều hơn cho câu lệnh truy vấn như là SQL FUNCTIONS, bộ đôi GROUP BY và HAVING, cuối cùng là ORDER BY. Show
Nội dung 1. Vai trò của FUNCTION, GROUP BY và ORDER BY trong SQLCác từ khoá hôm nay cũng sẽ được sử dụng với câu lệnh SELECT để giúp truy xuất dữ liệu đa dạng hơn. Ta có thể thấy rõ ý nghĩa của các từ khoá này qua tên gọi của nó như FUNCTION là cách áp dụng hàm vào câu truy vấn, GROUP BY dùng để gộp nhóm các dòng dữ liệu, ORDER BY sử dụng để sắp xếp dữ liệu. [Database] DML 4 (Part 1) [Database] DML 4 (Part 3) [Database] DML 4 (Part 2) [Database] DML 4 (Part 2) 2. Ý nghĩa và cách sử dụng câu lệnh JOIN trong SQL2.1. SQL FUNCTIONSMỗi DBMS sẽ có sư thay đổi về cú pháp SQL và bộ FUNCTIONS được sử dụng ở các SQL cũng sẽ có khác nhau đôi chút, hãy tham khảo FUNCTIONS ở MySQL: https://www.w3schools.com/mysql/mysql_ref_functions.asp Nếu bạn muốn sử dụng FUNCTION ở DBMS nào thì hãy tìm kiếm theo tên DBMS đó. FUNCTION có 3 loại chính sau:
Ví dụMuốn tính độ dài tên của mỗi bác sĩ.
2.2. Câu lệnh GROUP BYLà câu lệnh để gộp nhóm các record có cùng giá trị column. Thường được sử dụng chung với các hàm gộp (aggregate):
Cú pháp
Ví dụĐể lấy ra số lượng bác sĩ của mỗi chuyên khoa, thì thực hiện như bên dưới. Mình sử dụng GROUP BY để phân nhóm các bác sĩ cùng chuyên khoa, sau đó thực hiện đếm số lượng bác sĩ ở mỗi nhóm bằng cách dùng hàm COUNT. `FROM doctor;`0 2.3. Câu lệnh HAVINGĐược sử dụng để chứa các điều kiện là hàm gộp. Bởi vì WHERE không làm được điều này. Cú pháp
Ví dụ
Tiếp tục ví dụ ở phần 2, muốn lấy ra các chuyên khoa với nhiều hơn 3 bác sĩ thì kết hợp HAVING sau GROUP BY. 2.4. Câu lệnh ORDER BYCâu lệnh để sắp xếp các records. Với 2 điều kiện sắp xếp:
Cú pháp
Ví dụ
Câu lệnh trên dùng để lấy ra danh sách các bác sĩ theo thứ tự: ai lớn tuổi nhất thì hiển thị ra trước. Kết luậnVới việc nắm được toàn bộ các câu lệnh được sử dụng với DML thì bạn có thể tự tin truy vấn thoải mái rồi, nếu phần nào chưa rõ thì có thể xem kĩ ở phần video. Câu lệnh group by trong sql được dùng để kết hợp với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào các nhóm, hàm này trong ngôn ngữ sql đi sau mệnh đề WHERE trong một lệnh SELECT và ở trước mệnh đề ORDER BY. SQL và những mệnh đề như GROUP BY ngày càng đóng vai trò quan trọng không kém đối với hệ quản trị CSDL. Mục lục Biết cách sử dụng GROUP BY khi dùng ngôn ngữ SQL là một điều cần thiết.Không có một câu lệnh nào là thừa thải của một hàm CSDL, chỉ là bạn chưa cần thiết dùng đến chúng hoặc chưa áp dụng đúng mục đích. Mệnh đề group by sql được thêm vào bởi vì các hàm tập hợp (như SUM) trả về một tập của các giá trị ở cột đó mỗi khi chúng được gọi, nhờ lệnh GROUP BY trong sql, ta có thể tính tổng của các giá trị theo từng nhóm lẻ tại cột. Cách thực hiện nội dung như sau: SELECT tên_cột, SUM (tên _cột) FROM tên_bảng GROUP BY tên_cột Ví dụ ta có bản ghi “HOCPHISINHVIEN” như sau: ID TEN TUOI MONHOC HOCPHI 1 Hoang 21 CNTT 4 2 Nhu 22 TCNH 5 3 Hung 21 CK 3 4 Hoang 21 CK 3 5 Hung 21 CNTT 4 6 Ngan 22 TCNH 5 Nếu muốn biết tổng số học phí của từng sinh viên, ta buộc phải dùng truy vấn như sau: SQL> SELECT TEN, SUM(HOCPHI) FROM HOCPHISINHVIEN GROUP BY TEN; Khi đó sẽ cho ra một bảng ghi nội dung mới như sau: TEN SUM(HOCPHI) Hoang 7 Nhu 5 Hung 7 Ngan 5 Cách sử dụng mệnh đề nhìn chung cũng khá đơn giản, chỉ cần nắm rõ cú pháp, bạn cũng không cần phải thuộc nằm lòng mới có thể sử dụng được, đây cũng có thể được xem là một lợi thế của người tạo ngôn ngữ truy vấn SQL. Một số hàm tổng hợp thường đi kèm với Group by khi lập trình SQL.Theo công thức cấu trúc, group by trong sql server thường được đi kèm với một số hàm nhất định, cụ thể nhất đó là:
Ví dụ về câu lệnh group by để lập trình sqlMột vài ví dụ về câu lệnh group by in sql để bạn đọc có thể tham khảo. Ví dụ 1: Lệnh group by sql Server SELECT cot1, cot2, … cot_N, Ham_tong (cot) FROM bang [WHERE dieukien] GROUP BY cot1, cot2, … cot_N; Chú thích: – Cot1, cot2, … cotN: là giá trị không nằm ở hàm tổng và phải nằm ở mệnh đề GROUP BY. – Ham_tong: có thể là các hàm như MIN, MAX, COUNT, SUM, AVG – Bang: bảng cần lấy bảng ghi và phải có ít nhất 1 bảng thuộc lệnh FROM – WHERE dieukien: điều kiện phù hợp đáp ứng với mệnh đề WHERE Ví dụ 2: Cú pháp group by sql Server dùng hàm SUM. Dưới đây là ví dụ dùng hàm SUM tính tổng để trả về mã số thiết bị và tổng số lượng theo mã số thiết bị. SELECT maso_thietbi, SUM(soluong) AS “Tong so luong” FROM thietbi GROUP BY maso_thietbi Ví dụ 3: Cú pháp group by sql Server dùng hàm MIN. Cú pháp này dùng hàm MIN nhỏ nhất để cho bạn kết quả tên sản phẩm và số lượng tối thiểu của tên sản phẩm đó. SELECT ten_sanpham, MIN(Soluong) AS “So luong it nhat” FROM sanpham GROUP BY ten_san pham Ví dụ 4: Cú pháp group by SQL trong Access SELECT fieldlist FROM table WHERE criteria [GROUP BY groupfieldlist] Chú thích: – Fieldlist là tên của một hoặc nhiều trường cần truy xuất – Table là tên bảng cần truy xuất các bản ghi – Criteria là điều kiện cho mệnh đề WHERE – Groupfieldlist là tên tối đa 10 trường được dùng để nhóm các bản ghi theo thứ tự cấp độ nhóm cao nhất đến thấp nhất. 3. Lưu ý về lệnh group by– Mệnh đề GROUP BY phải luôn theo sau các điều kiện thuộc mệnh đề WHERE, tức sau khi viết mệnh đề WHERE xong xuống dòng đến mệnh đề GROUP BY.– Mệnh đề ORDER BY luôn theo sau mệnh đề GROUP BY nếu được sử dụng ở trong cú pháp truy vấn dữ liệu. Trên đây là những chia sẻ của chúng tôi về câu lệnh group by thuộc ngôn ngữ sql, một lệnh được sử dụng kết hợp với mệnh đề WHERE để gom nhóm trong sql các dữ liệu giống nhau. Hy vọng từ những thông tin cú pháp trên bạn có thể học tập, thực hành với kết quả sử dụng ngôn ngữ SQL tốt hơn. Xem thêm:
Tốt nghiệp Graduated Windesheim 2020, top Đại học lớn nhất thế giới, tôi mở blog chia sẻ kiến thức, kinh nghiệm về SQL |