Group By Having trong SQL Server

Sử dụng SQL server

5.0 (4 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 3 năm trước 58.313 lượt xem 9 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Group By Having trong SQL Server

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é!

Query.sql

SQLQuery1.sql

Kết luận

Bài sau chúng ta sẽ cùng tìm hiểu về Auto Increament 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ó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Group By Having trong SQL Server dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Sử dụng SQL server

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 và SQL Server thông qua serial HƯỚNG DẪN SỬ DỤNG SQL SERVER nhé!

Đánh giá

5.0
4 đánh giá
Đánh giá
5
4
4
3
2
1
hoangnam2303 đã đánh giá 3 năm trước

Trọng Nghĩa đã đánh giá 5 năm trước

TuongNV đã đánh giá 6 năm trước

good

vkit đã đánh giá 6 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
DongTV đã bình luận 4 năm trước

-- Xuất ra danh sách Giáo viên có Mức lương > 2000 & Tuổi của giáo viên nhận mức lương đó > 30 tuổi
SELECT HOTEN, LUONG, YEAR(GETDATE())-YEAR(NGSINH) AS N'Tuổi' FROM dbo.GIAOVIEN
WHERE LUONG > 2000
GROUP BY LUONG, NGSINH, HOTEN
HAVING YEAR(GETDATE())-YEAR(NGSINH) >30
GO

ilearnit/96 đã bình luận 5 năm trước


--Câu 3 Cho biết sinh viên khoa CNTT, khoá 2002-2006 chưa học môn cấu trúc dữ liệu 1

SELECT distinct Sinh_vien.* FROM sinh_vien
LEFT JOIN lop ON Lop.Ma_Lop = Sinh_Vien.Ma_Lop
LEFT JOIN khoa ON Khoa.Ma_Khoa = Lop.Ma_Khoa
LEFT JOIN dbo.Mon_Hoc ON Mon_Hoc.Ma_Khoa = lop.Ma_Khoa
LEFT JOIN dbo.Khoahoc ON Khoahoc.Ma_Khoa_hoc = Lop.Ma_Khoa_Hoc
WHERE khoahoc.Nam_Bat_Dau = 2002
AND khoahoc.Nam_Ket_Thuc = 2006
AND mon_hoc.Ten_MH != N'Cấu trúc dữ liệu 1'

--Câu 4 Cho biết sinh viên thi không đậu (Diem <5) môn cấu trúc dữ liệu 1 nhưng chưa thi lại. 
SELECT sinh_vien.* FROM sinh_vien
LEFT JOIN dbo.Ket_Qua ON Ket_Qua.Ma_SV = Sinh_Vien.Ma_SV
LEFT JOIN dbo.Mon_Hoc ON Mon_Hoc.Ma_MH = Ket_Qua.Ma_MH
WHERE mon_hoc.Ten_MH = N'Cấu trúc dữ liệu 1'
AND ket_qua.Diem <5
AND dbo.Ket_Qua.Ma_SV NOT IN 
(SELECT ket_qua.Ma_SV FROM dbo.Ket_Qua
WHERE dbo.Ket_Qua.Lan_Thi>1)

--Câu 5 Với mỗi lớp thuộc khoa CNTT, cho biết mã lớp, mã khóa học, tên chương trình và số sinh viên thuộc lớp đó
--lấy số sinh viên trong 1 lớp thuộc khoa CNTT
--> mã lớp
-- lấy sinh viên thuộc khoa cntt
-- tính theo mã lớp --> số lượng sinh viên thuộc lớp đó

SELECT  lop.Ma_Lop,lop.Ma_Khoa_Hoc,cthoc.Ten_CT,COUNT(lop.Ma_Lop) AS N'Số lượng' FROM dbo.Sinh_Vien
LEFT JOIN lop ON Lop.Ma_Lop = Sinh_Vien.Ma_Lop
LEFT JOIN khoa ON Khoa.Ma_Khoa = Lop.Ma_Khoa
LEFT JOIN cthoc ON CTHoc.MaCT = Lop.MaCT
WHERE khoa.Ma_Khoa = 'CNTT'
GROUP BY lop.Ma_Lop,lop.Ma_Khoa_Hoc,cthoc.Ten_CT

--Câu 6 Cho biết điểm trung bình của sinh viên có mã số 0212003 
--(điểm trung bình chỉ tính trên lần thi sau cùng của sinh viên) 
--> lấy danh sách điểm trong các môn của ma_sv 0212003 
--> lấy điểm ở lần thi lớn nhất(sau cùng) ==> đưa vào 1 view

-- Join 2 bảng --> Sử dụng truy vấn bình thường để lấy


SELECT ROUND(AVG(ket_qua.diem),2) FROM KQ_SV
LEFT JOIN dbo.Ket_Qua ON KQ_SV.ma_sv = dbo.Ket_Qua.ma_sv 
WHERE  KQ_SV.Lan_thi = dbo.Ket_Qua.lan_thi
AND KQ_SV.ma_mh = dbo.Ket_Qua.Ma_MH

create VIEW KQ_SV  AS
(
SELECT ket_qua.Ma_SV, dbo.Ket_Qua.Ma_MH,COUNT(*) AS 'Lan_Thi'FROM dbo.Ket_Qua
WHERE dbo.Ket_Qua.Ma_SV = 0212003
GROUP BY ma_mh, ma_sv
)

Thanh Huyền đã bình luận 5 năm trước

cho em hỏi là y/c xuất ra tuổi lớn hơn tuổi tb khi f5 không ra dữ liệu thì làm sao ạ

 

TuongNV đã bình luận 6 năm trước

Em thấy ở ví dụ 2 không cần thiết phải dùng truy vấn lồng cũng ra kết quả đúng,

Vì mình đã có điều kiện:  WHERE GIAOVIEN.MAGV = NGUOITHAN.MAGV

Nên đương nhiên những giáo viên xuất hiện trong bảng giáo viên cũng sẽ xuất hiện trên bảng người thân

SELECT GIAOVIEN.HOTEN, LUONG, SUM(YEAR(GETDATE()) - YEAR(GIAOVIEN.NGSINH)) FROM dbo.GIAOVIEN, dbo.NGUOITHAN
WHERE GIAOVIEN.MAGV = NGUOITHAN.MAGV
GROUP BY LUONG, GIAOVIEN.NGSINH, GIAOVIEN.HOTEN

 

Không có video.