Nhóm dữ liệu phần 2
Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 37 trên 72.
Từ khóa (keyword) WHERE kiểm tra một điều kiện riêng trên từng bản ghi. Ví dụ:
SELECT * FROM table1
WHERE col1 > col2Biểu thức col1 > col2 sẽ chạy trên mọi bản ghi và kiểm tra xem điều kiện có được đáp ứng hay không.
Nhưng nếu muốn lọc kết quả tổng hợp thì sao? Ví dụ:
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryCách này sẽ không hoạt động vì WHERE không thể kiểm tra các giá trị tổng hợp. Để làm việc đó, ta có từ khóa HAVING. Từ khóa này lọc dữ liệu theo điều kiện tổng hợp.
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40Câu lệnh này sẽ lọc tất cả danh mục có giá trung bình lớn hơn 40.
Nếu muốn kết hợp mệnh đề HAVING và WHERE, ta sẽ viết:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40Trước tiên, câu lệnh sẽ duyệt từng bản ghi và lọc tất cả bản ghi có giá lớn hơn 25. Chỉ sau đó, câu lệnh mới chạy mệnh đề GROUP BY và lọc từng danh mục có giá trung bình lớn hơn 40.
Thử thách
Trung bìnhCác bảng và cột hiện có:
earthquakes:location,amplitude,period
Thang Richter là thang đo logarit dùng để đo độ lớn của động đất.
Chúng ta cần trả về độ lớn trung bình của tất cả các trận động đất lớn ở từng địa điểm.
Động đất lớn được định nghĩa là:
- Biên độ lớn hơn hoặc bằng 1
- Chu kỳ của sóng lớn hơn hoặc bằng 1 phút
Trong thử thách này, chúng ta sẽ dùng một công thức khác: M = (A/T)^2 / T, tương đương với M = ((A/T)*(A/T)) / T. Ở đây, M là độ lớn, A là cột amplitude và T là cột period.
Trả về địa điểm và độ lớn trung bình của từng địa điểm, chỉ tính các trận động đất lớn (đặt tên cột là avg_magnitude). Chỉ đưa vào kết quả những địa điểm có avg_magnitude lớn hơn 1.
Làm tròn kết quả đến 2 chữ số thập phân.
Tự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mớiTự luyện tập: Playground SQL