Sử dụng SQL server

Sử dụng SQL server

Group By trong SQL Server Group By trong SQL Server Group By trong SQL Server Group By trong SQL Server Group By trong SQL Server 5/5 (116 reviews)

Group By trong SQL Server

Đã đăng 2017-04-12 01:19:36 bởi Kteam
25 bình luận 14474 lượt xem
Group By trong SQL Server 5 /5 stars (1 reviews)
 

Dẫn nhập

Với hệ thống nhỏ, chúng ta hoàn toàn có thể lưu trữ dữ liệu bằng file để khi tắt ứng dụng dữ liệu chúng ta vẫn còn được lưu giữ. Nhưng với hệ thống lớn, truy vấn tìm kiếm, thao tác với dữ liệu trên file không còn dễ dàng và hiệu quả nữa. Và SQL ra đời để giải quyết vấn đề đó.

Chúng ta cùng nhau tìm hiểu về SQL Server trong serial này nhé!

Nội dung

Nội dung hiện tại mang tính tạm thời đáp ứng nhu cầu xem & cập nhập kiến thức cơ bản thông qua Video hướng dẫn.

Nội dung chi tiết của khóa học Hướng dẫn sử dụng SQL Server đang trong quá trình xây dựng một cách kỹ lưỡng nhằm đảm bảo chất lượng và sẽ được cập nhập liên tục trong thời gian tới.

Các bạn nhớ theo dõi và luôn ủng hộ Kteam nhé!

Download Project

Query.sql


-- 1/ Tạo DB + Sử dụng DB
	Create Database HowKteam
	Go
	Use HowKteam
	Go
	
-- 2/ Tạo các table + Khoá chính
	Create Table THAMGIADT
	(
		MAGV nchar(3),
		MADT nchar(4),
		STT int,
		PHUCAP float,
		KETQUA nvarchar(10),
		Primary Key (MAGV,MADT,STT)
	)
	go
	
	Create Table KHOA
	(
		MAKHOA nchar (4),
		TENKHOA nvarchar (50),
		NAMTL int,
		PHONG char(3),
		DIENTHOAI char(10),
		TRUONGKHOA nchar(3),
		NGAYNHANCHUC datetime,
		primary key (MAKHOA)
	)
	go
	
	create table BOMON
	(
		MABM nchar(4),
		TENBM nchar (50),
		PHONG char(3),
		DIENTHOAI char(11),
		TRUONGBM nchar(3),
		MAKHOA nchar (4),
		NGAYNHANCHUC date,
		primary key (MABM)
	)
	go
	
	create table CONGVIEC 
	(
		MADT nchar(4),
		SOTT int,
		TENCV nvarchar(50),
		NGAYBD datetime,
		NGAYKT datetime,
		primary key (MADT,SOTT)
	)
	go
	
	create table DETAI
	(
		MADT nchar(4),
		TENDT nvarchar(50),
		CAPQL nchar(20),
		KINHPHI float,
		NGAYBD date,
		NGAYKT date,
		MACD nchar(4),
		GVCNDT nchar(3),
		primary key (MADT)
	)
	go
	create table CHUDE
	(
		MACD nchar(4),
		TENCD nvarchar(30),
		primary key (MACD)
	)
	go
	
	create table GIAOVIEN
	(
		MAGV nchar(3),
		HOTEN nvarchar(50),
		LUONG float,
		PHAI nchar(3),
		NGSINH date,
		DIACHI nchar(50),
		GVQLCM nchar(3),
		MABM nchar(4),
		primary key (MAGV)
	)
	go
	
	create table NGUOITHAN
	(
		MAGV nchar(3),
		TEN nchar(12),
		NGSINH datetime,
		PHAI nchar(3),
		primary key (MAGV,TEN)
	)
	go
	
	create table GV_DT
	(
		MAGV nchar(3),
		DIENTHOAI char (10),
		primary key (MAGV,DIENTHOAI)
	)
	go
	
-- 3/ Tạo khoá ngoại
--Tạo khoá ngoại ở bảng THAMGIADT
	Alter table THAMGIADT
		add constraint FK_HG1_MADT
		foreign key (MADT, STT)
		references CONGVIEC(MADT,SOTT)
		go
		
--Tạo khóa ngoại ở bảng CONGVIEC
	Alter table CONGVIEC
		add constraint FK_HG2_MADT
		foreign key (MADT)
		references DETAI(MADT)
		go
		
--Tạo khóa ngoại ở bảng DETAI
	Alter table DETAI
		add constraint FK_HG3_MACD
		foreign key (MACD)
		references CHUDE(MACD)
		go
		
--Tạo khóa ngoại ở bảng DETAI
	Alter table DETAI
		add constraint FK_HG4_GVCNDT
		foreign key (GVCNDT)
		references GIAOVIEN(MAGV)
		go
		
--Tạo khóa ngoại ở bảng THAMGIADT
	Alter table THAMGIADT
		add constraint FK_HG5_MAGV
		foreign key (MAGV)
		references GIAOVIEN(MAGV)
		go
		
--Tạo khóa ngoại ở bảng GIAOVIEN
	Alter table GIAOVIEN
		add constraint FK_HG6_GVQLCM
		foreign key (GVQLCM)
		references GIAOVIEN(MAGV)
		go
			
--Tạo khóa ngoại ở bảng KHOA
	Alter table KHOA
		add constraint FK_HG7_TRUONGKHOA
		foreign key (TRUONGKHOA)
		references GIAOVIEN(MAGV)
		go
		
--Tạo khóa ngoại ở bảng NGUOITHAN
	Alter table NGUOITHAN
		add constraint FK_HG8_MAGV
		foreign key (MAGV)
		references GIAOVIEN(MAGV)
		go
		
--Tạo khóa ngoại ở bảng GIAOVIEN
	Alter table GIAOVIEN
		add constraint FK_HG9_MABM
		foreign key (MABM)
		references BOMON(MABM)
		go
		
--Tạo khóa ngoại ở bảng BOMON
	Alter table BOMON
		add constraint FK_HG10_MAKHOA
		foreign key (MAKHOA)
		references KHOA(MAKHOA)
		go
		
--Tạo khóa ngoại ở bảng BOMON
	Alter table BOMON
		add constraint FK_HG11_TRUONGBM
		foreign key (TRUONGBM)
		references GIAOVIEN(MAGV)
		go
		
--Tạo khóa ngoại ở bảng GV_DT
	Alter table GV_DT
		add constraint FK_HG12_MAGV
		foreign key (MAGV)
		references GIAOVIEN(MAGV)
		go
		
-- 4/ Nhập data
--Nhập data cho bảng CHUDE
	Insert Into CHUDE(MACD,TENCD)
	values ('NCPT', N'Nghiên cứu phát triển')
	Insert Into CHUDE(MACD,TENCD)
	values ('QLGD', N'Quản lý giáo dục')
	Insert Into CHUDE(MACD,TENCD)
	values ('UDCN', N'Ứng dụng công nghệ')
	go
	
--Nhập data cho bảng GIAOVIEN
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('001',N'Nguyễn Hoài An',2000.0,N'Nam','1973-02-15',N'25/3 Lạc Long Quân, Q.10,TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('002',N'Trần Trà Hương',2500.0,N'Nữ','1960-06-20',N'125 Trần Hưng Đạo, Q.1, TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('003',N'Nguyễn Ngọc Ánh',2200.0,N'Nữ','1975-05-11',N'12/21 Võ Văn Ngân Thủ Đức, TP HCM',N'002')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('004',N'Trương Nam Sơn',2300.0,N'Nam','1959-06-20',N'215 Lý Thường Kiệt,TP Biên Hòa')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('005',N'Lý Hoàng Hà',2500.0,N'Nam','1954-10-23',N'22/5 Nguyễn Xí, Q.Bình Thạnh, TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('006',N'Trần Bạch Tuyết',1500.0,N'Nữ','1980-05-20',N'127 Hùng Vương, TP Mỹ Tho',N'004')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('007',N'Nguyễn An Trung',2100.0,N'Nam','1976-06-05',N'234 3/2, TP Biên Hòa')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('008',N'Trần Trung Hiếu',1800.0,N'Nam','1977-08-06',N'22/11 Lý Thường Kiệt,TP Mỹ Tho',N'007')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('009',N'Trần Hoàng nam',2000.0,N'Nam','1975-11-22',N'234 Trấn Não,An Phú, TP HCM',N'001')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('010',N'Phạm Nam Thanh',1500.0,N'Nam','1980-12-12',N'221 Hùng Vương,Q.5, TP HCM',N'007')
	go
	
--Nhập data cho bảng DETAI
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('001',N'HTTT quản lý các trường ĐH',N'ĐHQG',20.0,'2007-10-20','2008-10-20',N'QLGD','002')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('002',N'HTTT quản lý giáo vụ cho một Khoa',N'Trường',20.0,'2000-10-12','2001-10-12',N'QLGD','002')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('003',N'Nghiên cứu chế tạo sợi Nanô Platin',N'ĐHQG',300.0,'2008-05-15','2010-05-15',N'NCPT','005')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('004',N'Tạo vật liệu sinh học bằng màng ối người',N'Nhà nước',100.0,'2007-01-01','2009-12-31',N'NCPT','004')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('005',N'Ứng dụng hóa học xanh',N'Trường',200.0,'2003-10-10','2004-12-10',N'UDCN','007')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('006',N'Nghiên cứu tế bào gốc',N'Nhà nước',4000.0,'2006-10-12','2009-10-12',N'NCPT','004')
	Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT)
	values ('007',N'HTTT quản lý thư viện ở các trường ĐH',N'Trường',20.0,'2009-05-10','2010-05-10',N'QLGD','001')
	go
	
--Nhập data cho bảng CONGVIEC
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('001',1,N'Khởi tạo và Lập kế hoạch','2007-10-20','2008-12-20')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('001',2,N'Xác định yêu cầu','2008-12-21','2008-03-21')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('001',3,N'Phân tích hệ thống','2008-03-22','2008-05-22')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('001',4,N'Thiết kế hệ thống','2008-05-23','2008-06-23')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('001',5,N'Cài đặt thử nghiệm','2008-06-24','2008-10-20')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('002',1,N'Khởi tạo và lập kế hoạch','2009-05-10','2009-07-10')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('002',2,N'Xác định yêu cầu','2009-07-11','2009-10-11')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('002',3,N'Phân tích hệ thống','2009-10-12','2009-12-20')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('002',4,N'Thiết kế hệ thống','2009-12-21','2010-03-22')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('002',5,N'Cài đặt thử nghiệm','2010-03-23','2010-05-10')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('006',1,N'Lấy mẫu','2006-10-20','2007-02-20')
	Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT)
	values ('006',2,N'Nuôi cấy','2007-02-21','2008-09-21')
	go
	
--Nhập data cho bảng THAMGIADT
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP)
	values ('001','002',1,0.0)
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP)
	values ('001','002',2,2.0)
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('002','001',4,2.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('003','001',1,1.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('003','001',2,0.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('003','001',4,1.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP)
	values ('003','002',2,0.0)
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('004','006',1,0.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('004','006',2,1.0,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA)
	values ('006','006',2,1.5,N'Đạt')
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP)
	values ('009','002',3,0.5)
	Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP)
	values ('009','002',4,1.5)
	go
	
--Nhập data cho bảng KHOA
	Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC)
	values (N'CNTT',N'Công nghệ thông tin',1995,'B11','0838123456','002','2005-02-20')
	Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC)
	values (N'HH',N'Hóa học',1980,'B41','0838456456','007','2001-10-15')
	Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC)
	values (N'SH',N'Sinh học',1980,'B31','0838454545','004','2000-10-11')
	Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC)
	values (N'VL',N'Vật lý',1976,'B21','0838223223','005','2003-09-18')
	go
	
--Nhập data cho bảng NGUOITHAN
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('001',N'Hùng','1990-01-14',N'Nam')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('001',N'Thủy','1994-12-08',N'Nữ')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('003',N'Hà','1998-09-03',N'Nữ')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('003',N'Thu','1998-09-03',N'Nữ')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('007',N'Mai','2003-03-26',N'Nữ')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('007',N'Vy','2000-02-14',N'Nữ')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('008',N'Nam','1991-05-06',N'Nam')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('009',N'An','1996-08-19',N'Nam')
	Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI)
	values ('010',N'Nguyệt','2006-01-14',N'Nữ')
	go
	
--Nhập data cho bảng GV_DT
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('001','0838912112')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('001','0903123123')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('002','0913454545')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('003','0838121212')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('003','0903656565')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('003','0937125125')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('006','0937888888')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('008','0653717171')
	Insert Into GV_DT(MAGV,DIENTHOAI)
	values ('008','0913232323')
	go
	
--Nhập data cho bảng BOMON
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA)
	values (N'CNTT',N'Công nghệ tri thức','B15','0838126126',N'CNTT')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA)
	values (N'HHC',N'Hóa hữu cơ','B44','0838222222',N'HH')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA)
	values (N'HL',N'Hóa Lý','B42','0838878787',N'HH')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC)
	values (N'HPT',N'Hóa phân tích','B43','0838777777','007',N'HH','2007-10-15')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC)
	values (N'HTTT',N'Hệ thống thông tin','B13','0838125125','002',N'CNTT','2004-09-20')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC)
	values (N'MMT',N'Mạng máy tính','B16','0838676767','001',N'CNTT','2005-05-15')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA)
	values (N'SH',N'Sinh hóa','B33','0838898989',N'SH')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA)
	values (N'VLĐT',N'Vật lý điện tử','B23','0838234234',N'VL')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC)
	values (N'VLUD',N'Vật lý ứng dụng','B24','0838454545','005',N'VL','2006-02-18')
	Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC)
	values (N'VS',N'Vi Sinh','B32','0838909090','004',N'SH','2007-01-01')
	go
	
--Cập nhật thêm dữ liệu cho bảng GIAOVIEN
	update GIAOVIEN
	set MABM = 'MMT'
	where (MAGV = '001')
	update GIAOVIEN
	set MABM = 'HTTT'
	where (MAGV = '002')
	update GIAOVIEN
	set MABM = 'HTTT'
	where (MAGV = '003')
	update GIAOVIEN
	set MABM = 'VS'
	where (MAGV = '004')
	update GIAOVIEN
	set MABM = N'VLĐT'
	where (MAGV = '005')
	update GIAOVIEN
	set MABM = 'VS'
	where (MAGV = '006')
	update GIAOVIEN
	set MABM = 'HPT'
	where (MAGV = '007')
	update GIAOVIEN
	set MABM = 'HPT'
	where (MAGV = '008')
	update GIAOVIEN
	set MABM = 'MMT'
	where (MAGV = '009')
	update GIAOVIEN
	set MABM = 'HPT'
	where (MAGV = '010')
	GO	

SQLQuery1.sql

USE HowKteam
GO

-- Xuất ra Danh sách tên bộ môn và số lượng giáo viên của bộ môn đó
SELECT TENBM, COUNT(*) FROM dbo.BOMON, dbo.GIAOVIEN
WHERE BOMON.MABM = GIAOVIEN.MABM
GROUP BY TENBM

-- cột hiển thị phải là thuộc tính nằm trong khối group by hoặc là Agreegate function

-- Xuất ra Danh sách tên bộ môn và số lượng giáo viên của bộ môn đó
SELECT TENBM, COUNT(*) FROM dbo.BOMON, dbo.GIAOVIEN
WHERE BOMON.MABM = GIAOVIEN.MABM
GROUP BY TENBM, dbo.BOMON.MABM


-- Xuất ra Danh sách tên bộ môn và số lượng giáo viên của bộ môn đó
SELECT TENBM, MAKHOA, COUNT(*) FROM dbo.BOMON, dbo.GIAOVIEN
WHERE BOMON.MABM = GIAOVIEN.MABM
GROUP BY MAKHOA, TENBM

SELECT TENBM, MAKHOA, COUNT(*) FROM dbo.BOMON, dbo.GIAOVIEN
WHERE BOMON.MABM = GIAOVIEN.MABM
GROUP BY TENBM,MAKHOA

-- Lấy ra danh sách giáo viên có lương > lương trung bình của Giáo viên
SELECT * FROM dbo.GIAOVIEN
WHERE LUONG >(SELECT SUM(Luong) FROM dbo.GIAOVIEN)/(SELECT COUNT(*) FROM dbo.GIAOVIEN)

-- Xuất ra tên giáo viên và số lượng đề tài giáo viên đó đã làm
SELECT GV.HOTEN, COUNT(*) FROM dbo.GIAOVIEN AS GV, dbo.THAMGIADT AS TGDT
WHERE gv.MAGV = TGDT.MAGV
GROUP BY GV.MAGV, GV.HOTEN

/*
Bài tập:
1. Xuất ra tên giáo viên và số lượng người thân của GV đó
2. Xuât ra tên giáo viên và số lượng đề tài đã hoàn thành mà giáo viên đó tham gia
3. Xuất ra tên khoa có tổng số lương của giáo viên trong khoa là lớn nhất
*/

/*
Agreeate Function

AVG()	Returns the average value
COUNT()	Returns the number of rows
FIRST()	Returns the first value
LAST()	Returns the last value
MAX()	Returns the largest value
MIN()	Returns the smallest value
ROUND()	Rounds a numeric field to the number of decimals specified
SUM()	Returns the sum
*/


/*
string function

CHARINDEX	Searches an expression in a string expression and returns its starting position if found
CONCAT()	 
LEFT()	 
LEN() / LENGTH()	Returns the length of the value in a text field
LOWER() / LCASE()	Converts character data to lower case
LTRIM()	 
SUBSTRING() / MID()	Extract characters from a text field
PATINDEX()	 
REPLACE()	 
RIGHT()	 
RTRIM()	 
UPPER() / UCASE()	Converts character data to upper case
*/

Kết luận

Bài sau chúng ta sẽ cùng tìm hiểu về Group By Having trong SQL Server.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Và đừng quên “Luyện tập – Thử Thách – Không ngại khó

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Group By trong SQL Server
mntngocthang.cntt 2018-11-26 21:02:56

SELECT TOP 1 SUM(GV.LUONG),K.TENKHOA 
FROM dbo.GIAOVIEN AS GV, dbo.BOMON AS BM, dbo.KHOA AS K
WHERE GV.MABM = BM.MABM AND BM.MAKHOA = k.MAKHOA
GROUP BY K.TENKHOA

1 bình chọn
Reply
Group By trong SQL Server
namdoel1412 2018-11-18 22:53:23

Code tham khảo câu cuối mọi người nhé ^^


select top 1 blo.MAKHOA,blo.Luong from 
(select k.MAKHOA, sum(gv.LUONG) as 'Luong' from Khoa as k,BOMON as bm, GIAOVIEN as gv
where k.MAKHOA=bm.MAKHOA and bm.MABM=gv.MABM
group by k.MAKHOA
) as blo

0 bình chọn
Reply
Group By trong SQL Server
Tuyền Lê 2018-05-20 21:23:37

BAI TAP 3 O TREN LAM THE NAO VAY MOI NGUOI

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
huy nguyễn 2018-07-02 10:06:44
select top 1 k.TENKHOA,sum(gv.LUONG) as 'TongLuong' from KHOA as k,BOMON as bm, GIAOVIEN as gv where gv.MABM = bm.MABM and k.MAKHOA = bm.MAKHOA group by k.TENKHOA
0 bình chọn
Reply
Group By trong SQL Server
Tuyền Lê 2018-05-20 20:13:44

--2/ XUAT RA TEN GIAO VIEN VA SO LUONG DE TAI DA HOAN THANH CUA GIAOVIEN DO
SELECT HOTEN, COUNT(*) FROM GIAOVIEN AS G, THAMGIADT AS TG
WHERE G.MAGV = TG.MAGV AND TG.KETQUA = 'Đạt'
GROUP BY TG.MAGV, G.HOTEN

sao kết quả ra lại rỗng vậy nhỉ

0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
Tuyền Lê 2018-05-20 20:33:48
--chỉnh lại TG.KETQUA LIKE 'Đ%' thì chạy được: SELECT G.HOTEN, COUNT(*) FROM THAMGIADT AS TG, GIAOVIEN AS G WHERE TG.MAGV=G.MAGV AND TG.KETQUA LIKE 'Đ%' GROUP BY G.MAGV, G.HOTEN
0 bình chọn
Reply
Kteam - Howkteam Free Education
Trần Minh Phát 2018-05-21 17:11:43
Cái chỗ 'Đạt' của bạn nên sửa lại là N'Đạt' nha vì đó là bạn nhập tiếng Việt
0 bình chọn
Reply
Group By trong SQL Server
yeuthethao37 2018-04-10 09:49:21

làm sao để biết 1 giáo viên đã hoàn thành đề tài nhỉ

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Tuyền Lê 2018-05-20 20:34:44
SELECT G.HOTEN, COUNT(*) FROM THAMGIADT AS TG, GIAOVIEN AS G WHERE TG.MAGV=G.MAGV AND TG.KETQUA LIKE 'Đ%' GROUP BY G.MAGV, G.HOTEN
0 bình chọn
Reply
Group By trong SQL Server
Nealll 2018-03-20 14:20:53

SELECT MAGV FROM dbo.GIAOVIEN AS
WHERE MAGV NOT IN(

SELECT TOP(5) * FROM
(
SELECT MAGV,YEAR(GETDATE())-YEAR(NGSINH) AS Tuoi FROM dbo.GIAOVIEN
ORDER BY Tuoi ASC
)
)
sao khoong ra vaay m.n

0 bình chọn
Reply
Group By trong SQL Server
tonquocviet 2018-01-18 17:27:16

bài TỔNG SỔ LƯƠNG mình dùng mysql giải như sau, (có dùng thêm hàm Limit để lấy ra cái lớn nhất) :

SELECT TENKHOA , SUM(LUONG) as 'TongLuong'
FROM khoa , giaovien, bomon
WHERE khoa.MAKHOA= bomon.MAKHOA
AND giaovien.MABM = bomon.MABM
GROUP BY khoa.MAKHOA
LIMIT 1

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
loxuanthanh 2018-03-22 09:52:10
Mình chạy bằng Microsoft SQL Server Management Studio thì nó báo lỗi như sau: Column 'khoa.TENKHOA' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
0 bình chọn
Reply
Group By trong SQL Server
mr.ms 2018-01-09 22:47:33

xuất ra tên bộ môn có số lượng giao viên là lớn nhất:

DECLARE @max_sl CHAR(10)

 SELECT @max_sl = MAX(bm_sl.so_luong) FROM
    (SELECT bm.MABM, COUNT(*) AS 'so_luong' FROM dbo.GIAOVIEN  AS gv, dbo.BOMON AS bm
            WHERE gv.MABM = bm.MABM
            GROUP BY bm.MABM) AS bm_sl

 --PRINT @max_sl

SELECT bm.MABM, COUNT(*) AS 'so_luong' FROM dbo.GIAOVIEN  AS gv, dbo.BOMON AS bm
            WHERE gv.MABM = bm.MABM
            GROUP BY bm.MABM 
            HAVING COUNT(*) = @max_sl

0 bình chọn
Reply
Group By trong SQL Server
longk16haui 2017-08-07 16:58:29

em muốn lấy max cột abc trong cái truy vấn dưới thì viết kiểu gì vậy ạ

 

select TENBM, MAKHOA,COUNT(*) as N'số lượng giáo viên trong khoa', SUM(LUONG)as abc from BOMON, GIAOVIEN
where GIAOVIEN.MABM = BOMON.MABM
group by TENBM, MAKHOA

0 bình chọn
Reply
Group By trong SQL Server
liew2018 2017-07-23 19:15:00

3. Xuất ra tên khoa có tổng số lương của giáo viên trong khoa là lớn nhất ???

Bài này làm sao thế Ab HowKteam mình làm đến bước này là bí luôn rồi suy ghĩ hoài ko ra. >.<, T.T

SELECT     GV.HOTEN, K.TENKHOA, GV.LUONG
FROM         dbo.BOMON AS BM INNER JOIN
                      dbo.GIAOVIEN AS GV ON BM.TRUONGBM = GV.MAGV INNER JOIN
                      dbo.KHOA AS K ON BM.MAKHOA = K.MAKHOA

0 bình chọn
Reply
View all 6 comments
Kteam - Howkteam Free Education
Đinh Thanh Tuân 2017-12-09 20:39:35
mình cũng ko biết làm bài đó. mà ko AD có chữa :(
0 bình chọn
Reply
Kteam - Howkteam Free Education
mr.ms 2018-01-09 10:43:58
mk quên mất cách gán cho biến hay gì đó để code gọn và dễ hiểu . Bạn xem tạm b1 : xuat ra duoc makhoa,tenkhoa, va so luong giao vien cua tung khoa SELECT * FROM dbo.KHOA AS k, (SELECT bm.MAKHOA, bm.MABM, bm.TENBM, COUNT(*) AS 's_l' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MAbm = bm.MABM GROUP BY bm.MABM,bm.TENBM,bm.MAKHOA) AS bm_sl WHERE k.MAKHOA = bm_sl.MAKHOA GO b2 : xuất ra số lượng giao vien đông nhất cua khoa SELECT MAX(bm_sl.s_l) FROM dbo.KHOA AS k, (SELECT bm.MAKHOA, bm.MABM, bm.TENBM, COUNT(*) AS 's_l' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MAbm = bm.MABM GROUP BY bm.MABM,bm.TENBM,bm.MAKHOA) AS bm_sl WHERE k.MAKHOA = bm_sl.MAKHOA b3 : dùng câu lệnh having để tổng hợp lại ( chỉ xuất ra khi số lượng = max ) SELECT bm_sl.MAKHOA,bm_sl.TENBM,bm_sl.s_l FROM dbo.KHOA AS k, (SELECT bm.MAKHOA, bm.MABM, bm.TENBM, COUNT(*) AS 's_l' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MAbm = bm.MABM GROUP BY bm.MABM,bm.TENBM,bm.MAKHOA) AS bm_sl WHERE k.MAKHOA = bm_sl.MAKHOA GROUP BY bm_sl.MAKHOA,bm_sl.TENBM,bm_sl.s_l HAVING bm_sl.s_l = (SELECT MAX(bm_sl.s_l) FROM dbo.KHOA AS k, (SELECT bm.MAKHOA, bm.MABM, bm.TENBM, COUNT(*) AS 's_l' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MAbm = bm.MABM GROUP BY bm.MABM,bm.TENBM,bm.MAKHOA) AS bm_sl WHERE k.MAKHOA = bm_sl.MAKHOA )
0 bình chọn
Reply
Kteam - Howkteam Free Education
mr.ms 2018-01-09 10:45:03
SELECT * FROM dbo.KHOA AS k, (SELECT bm.MAKHOA, bm.MABM, bm.TENBM, COUNT(*) AS 's_l' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MAbm = bm.MABM GROUP BY bm.MABM,bm.TENBM,bm.MAKHOA) AS bm_sl WHERE k.MAKHOA = bm_sl.MAKHOA GO
0 bình chọn
Reply
Kteam - Howkteam Free Education
anhthien_cholau 2018-06-09 14:50:45
Bước đầu chúng ta sẽ group tên khoa và tổng lương của khoa lại, bởi vì Sum(gv.Luong) cho phép hiển thị vì nó nằm trogn agreeate function sau đó xuất ra rồi sắp xếp giảm dần, sau đó lấy top 1 của nó CODE: SELECT Top(1) KH.TENKHOA, SUM(GV.LUONG) AS Tong--SỞ DĨ CỘT LUONG HIỂN THỊ LÀ DO NÓ NẰM TRONG KHỐI AGREEATE FUNCTION FROM GIAOVIEN AS GV,KHOA AS KH,BOMON AS BM WHERE GV.MABM =BM.MABM AND BM.MAKHOA = KH.MAKHOA GROUP BY KH.TENKHOA,KH.MAKHOA order by Tong desc
0 bình chọn
Reply
Kteam - Howkteam Free Education
anhthien_cholau 2018-06-09 17:01:41
code nãy của mình chưa chuẩn trong mọi trường hợp nếu có lương = nhau, vì vậy mình sửa như này SELECT KH.TENKHOA, SUM(GV.LUONG) AS Tong FROM GIAOVIEN AS GV,KHOA AS KH,BOMON AS BM WHERE GV.MABM =BM.MABM AND BM.MAKHOA = KH.MAKHOA GROUP BY KH.TENKHOA,KH.MAKHOA having SUM(GV.LUONG)&gt;= ( SELECT TOP(1) SUM(GV1.LUONG) AS Tong FROM GIAOVIEN AS GV1,KHOA AS KH1,BOMON AS BM1 WHERE GV1.MABM =BM1.MABM AND BM1.MAKHOA = KH1.MAKHOA GROUP BY KH1.TENKHOA,KH1.MAKHOA )
0 bình chọn
Reply
Kteam - Howkteam Free Education
namdoel1412 2018-11-18 22:52:27
Code tham khảo mọi người nhé :v select top 1 blo.MAKHOA,blo.Luong from (select k.MAKHOA, sum(gv.LUONG) as 'Luong' from Khoa as k,BOMON as bm, GIAOVIEN as gv where k.MAKHOA=bm.MAKHOA and bm.MABM=gv.MABM group by k.MAKHOA ) as blo
0 bình chọn
Reply
Group By trong SQL Server
chaolegons 2017-05-29 23:23:22

Giải giùm mình ví dụ: Cho biết bộ môn có giáo viên đông nhất ?

0 bình chọn
Reply
View all 3 comments
Kteam - Howkteam Free Education
mr.ms 2018-01-09 09:40:39
SELECT MAX(bm_sl.so_luong) FROM dbo.GIAOVIEN, (SELECT bm.MABM,bm.TENBM,COUNT(*) AS 'so_luong' FROM dbo.GIAOVIEN AS gv, dbo.BOMON AS bm WHERE gv.MABM = bm.MABM GROUP BY bm.MABM, bm.TENBM) AS bm_sl WHERE bm_sl.MABM = GIAOVIEN.MABM
0 bình chọn
Reply
Kteam - Howkteam Free Education
anhthien_cholau 2018-06-09 15:04:49
mình nghĩ cách này sẽ ngắn và cho kết quả cũng chuẩn select Top(1) bm.TENBM, COUNT(*)as T from BOMON as bm,GIAOVIEN as gv where bm.MABM = gv.MABM group by bm.MABM,bm.TENBM order by T DESC
0 bình chọn
Reply
Kteam - Howkteam Free Education
anhthien_cholau 2018-06-09 17:04:53
select bm.TENBM, COUNT(*)as T from BOMON as bm,GIAOVIEN as gv where bm.MABM = gv.MABM group by bm.MABM,bm.TENBM having Count(*)&gt;= ( select Top(1) COUNT(*)as T from BOMON as bm,GIAOVIEN as gv where bm.MABM = gv.MABM group by bm.MABM,bm.TENBM ) cái nãy của mình chưa tối ưu
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education