Mệnh đề GROUP BY trong MySQL
Trần Thị Vân
- 1035
- 15/08/2025
Chức năng của Mệnh đề GROUP BY trong MySQL
Mệnh đề GROUP BY trong MySQL được sử dụng để nhóm các hàng có cột giống nhau lại nhằm mục đích tính tổng(SUM), số cao nhất(MAX), trung bình(AVG), bạn có thể nhóm 1 cột hoặc nhiều cột, có thể dùng điều kiện HAVING cho nhóm.
Code Mệnh đề GROUP BY trong MySQL
select id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1;
select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2;
select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2 HAVING tonggia<90000000;
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// GROUP BY id_cha1
echo "<b>GROUP BY id_cha1</b><br>";
$sql ="select id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
"Giá trung bình : ".number_format($row['giatrungbinh'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// GROUP BY id_cha1,id_cha2
echo "<b>GROUP BY id_cha1,id_cha2</b><br>";
$sql ="select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2";
$ketquahai = mysql_query($sql,$conn);
if(!$ketquahai){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquahai, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"ID Cha cấp hai: {$row['id_cha2']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
"Giá trung bình : ".number_format($row['giatrungbinh'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000
echo "<b>GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000</b><br>";
$sql ="select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2 HAVING tonggia<90000000";
$ketquaba = mysql_query($sql,$conn);
if(!$ketquaba){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquaba, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"ID Cha cấp hai: {$row['id_cha2']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
"Giá trung bình : ".number_format($row['giatrungbinh'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
GROUP BY id_cha1
ID Cha cấp một: 1
Giá cao nhất: 55.000.000
Tổng giá: 154.550.000
Giá trung bình : 38.637.500
--------------------------------
ID Cha cấp một: 2
Giá cao nhất: 3.400.000
Tổng giá: 6.100.000
Giá trung bình : 3.050.000
--------------------------------
GROUP BY id_cha1,id_cha2
ID Cha cấp một: 1
ID Cha cấp hai: 4
Giá cao nhất: 55.000.000
Tổng giá: 99.550.000
Giá trung bình : 49.775.000
--------------------------------
ID Cha cấp một: 1
ID Cha cấp hai: 5
Giá cao nhất: 30.000.000
Tổng giá: 55.000.000
Giá trung bình : 27.500.000
--------------------------------
ID Cha cấp một: 2
ID Cha cấp hai: 6
Giá cao nhất: 3.400.000
Tổng giá: 6.100.000
Giá trung bình : 3.050.000
--------------------------------
GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000
ID Cha cấp một: 1
ID Cha cấp hai: 5
Giá cao nhất: 30.000.000
Tổng giá: 55.000.000
Giá trung bình : 27.500.000
--------------------------------
ID Cha cấp một: 2
ID Cha cấp hai: 6
Giá cao nhất: 3.400.000
Tổng giá: 6.100.000
Giá trung bình : 3.050.000
--------------------------------
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Mệnh đề GROUP BY trong MySQL.
Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.
- 0 Bình luận
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Chia sẻ nội dung đánh giá của bạn về Mệnh đề GROUP BY trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Bình luận, Hỏi đáp
Đăng ký tư vấn thiết kế website
Tìm hiểu 1 năm không bằng lắng nghe 1 câu tư vấn