Khóa Học SQL Server - Bài 14. Toán tử BETWEEN trong SQL

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

Em cảm ơn thầy về bài học.
--BT1: Lấy danh sách các đơn đặt hàng có ngày đặt hàng trong khoảng từ ngay 1/1/1997 đến ngày 31/12/1997
--và được vận chuyển bằng đường tày thủy (Shipvia =3)
Select*
From [dbo].[Orders]
Where [ShipVia] = 3 And [OrderDate] Between '1997-1-1' and '1997-12-31';

--Thử thách 1: Viết câu lệnh SQL liệt kê họ và tên nhân viên,
-- chỉ sống ở London,
--có ngày tháng năm sinh từ đến 1/1/1952 đến 31/12/1963
--hoặc ngày tuyển từ 1/2/1992 đến 31/12/1993
-- chỉ lấy 3 nhân viên đầu tiên sắp xếp theo [LastName] A-Z.

Select TOP 3 [FirstName] +' ' + [LastName] as [Họ và tên],
[BirthDate] as [Ngày sinh],
[HireDate] as [Ngày tuyển]
From [dbo].[Employees]
Where [City] = 'London'
AND [BirthDate] BETWEEN '1952-01-01' AND '1963-12-31'
OR [BirthDate] BETWEEN '1992-02-01' AND '1993-12-31'
Order by [FirstName] ASC;

--Thử thách 2: Viết câu lệnh SQL liệt kê các đơn hàng,
-- [OrderDate] từ 01-07-1996 đến 01-09-1996
-- [OrderID] từ 10000 đến 10250
--Sắp xếp theo [ShipName] Z-A.

Select*
From [dbo].[Orders]
Where [OrderDate] Between '1996-07-01' And '1996-09-01'
And [OrderID] Between 10000 and 10250
Order by [ShipName] DESC;

PhongTran-klkh
Автор

cám ơn thầy về bài giảng chất lượng ạ!!
-- bt1: lấy ds các đơn đặt hàng có ngày trong khoảng
-- từ 1/1/1997 đến 31/12/1997 và được vận chuyển bằng tàu thủy
select *
from [Orders]
where [OrderDate] between '1997-01-01' and '1997-12-31' and [ShipVia] = 3
;
-- câu hỏi: lấy ds nhân viên có ngày sinh từ đầu năm 1948 đến cuối năm 1960, Danh xưng là Dr. hoặc Mr., sắp xếp theo số năm làm việc từ ít đến nhiều
-- giải:
select *
from [Employees]
where [BirthDate] between '1948' and '1960-12-31' and [TitleOfCourtesy] = 'Mr.' or [TitleOfCourtesy] = 'Dr.'
order by [HireDate] desc
;

TriNguyenLeMinh-qo
Автор

-- Bài tập 1: Lấy danh sách các đơn hàng có ngày đặt hàng trong khoảng
-- 1/1/1997 đến ngày 31/12/1997 và được vận chuyển = tàu thủy (ShipVia=3)
SELECT *
FROM [dbo].[Orders]
WHERE [ShipVia]=3 AND [OrderDate] BETWEEN '1997-01-01' AND '1997-12-31'

--Bài tập challenge
--Liệt kê tất cả các sản phẩm có CategoryID >1
-- Và giá từng sản phẩm từ 20 đến 80
SELECT *
FROM [dbo].[Products]
WHERE [CategoryID]>1 AND [UnitPrice] BETWEEN '20' AND '80'

Cảm ơn anh và mọi người ạ

sonnguyen-rdqc
Автор

Cảm ơn thầy vì bài học.
-- Lay danh sach cac DON DAT HANG, co ngay dat hang trong khoan tu 1/1/1997 - 31/12/1997
-- Va duoc van chuyen bang duong tau thuy (ShipVia = 3)
SELECT *
FROM Orders
WHERE ShipVia='3' AND (RequiredDate BETWEEN '1997-01-01' AND ' 1997-12-31');

.nguyenthanhtuan
Автор

Bài giảng hay lắm ạ !
BÀI TẬP 1: Lấy danh sách các đơn đặt hàng có ngày đặt hàng trong khoảng từ ngày 1/1/1997 đến ngày 31/12/1997 và được vận chuyển bằng đường tàu thủy (ShipVia = 3)
-- Giải bài tập 1:
SELECT *
FROM dbo.[Orders]
WHERE ([OrderDate] BETWEEN '1997-01-01' AND '1997-12-31') AND ([ShipVia] = 3);
THỬ THÁCH: Đặt 2 câu hỏi liên quan tới BETWEEN để luyện tập.
Câu 1: Lấy ra tất cả các sản phẩm có số lượng hàng tồn kho từ 50 đến 100 sản phẩm.
Câu 2: Lấy ra danh sách các quốc gia của các nhân viên có sinh nhật nằm trong khoảng từ ngày 1/8/1996 cho đến ngày 31/8/1996.

hieutrantrung
Автор

Em cảm ơn anh.
Đây là đáp án của em:
Bài 1: Select *
From [dbo].[Orders]
Where [ShipVia] = 3 AND ([OrderDate] BETWEEN '1997-1-1' AND '1997-12-31');

nhatnguyenminh
Автор

Em cảm ơn thầy ạ
Bài tập :
SELECT *
FROM [dbo].[Orders]
WHERE [ShipVia] = 3 AND [OrderDate]BETWEEN '1997-01-01' AND '1997-12-31';
Thử thách:
Hãy lấy danh sách các nhân viên có ngày sinh từ 26/01/1950 đến 26/01/2000

atdevil
Автор

--BÀI TÂP 1: LẤY DANH SÁCH CÁC ĐƠN ĐẶT HÀNG CÓ NGÀY ĐẶT HÀNG TRONG KHOẢNG
--TỪ 1-1-1997 ĐẾN NGÀY 31-12-1997 VÀ ĐC VẬN CHUYỂN BẰNG ĐƯỜNG TÀU THỦY
--(SHIPVIA = 3)
SELECT *
FROM [dbo].[Orders]
WHERE [OrderDate] BETWEEN '1997-1-1' AND '1997-12-31'
AND [ShipVia]='3' --122 ROW


--THỬ TÍNH
--1.TÍNH SỐ LƯỢNG HÀNG TB [UnitPrice] CỦA [Quantity] TỪ 5 ĐẾN 20
SELECT AVG([UnitPrice]) AS [ SỐ LƯỢNG HÀNG TB ]
FROM [dbo].[Order Details]
WHERE [Quantity] BETWEEN 5 AND 10;

--2.TÌM TẤT CẢ NHÂN VIÊN CÓ BirthDate TỪ 1984-08-12 ĐẾN 1956-1-1
--VÀ [TitleOfCourtesy]= 'Mr.'

SELECT *
FROM [dbo].[Employees]
WHERE [BirthDate] BETWEEN '1948-08-12' AND '1956-1-1'
AND [TitleOfCourtesy] ='Mr.'

nguyentrunghau
Автор

Hi - mình thử đặt ra thử thách & làm theo 2 cách, nhưng không rõ tại sao lại ra 2 kết quả khác nhau, nhờ mn xem giúp ạ, cảm ơn nhiều!!

Đề bài: tìm các nhân viên (trong EMPLOYEES) đến từ (Country) USA & có FirstName từ L->N

Cách 1: dùng BETWEEN
select FirstName, LastName, FirstName+' '+LastName Name, Country from Employees
where Country='USA' and FirstName between 'L' and 'N' order by Name
--> Kết quả: 2 nhân viên (không có Nancy)
--> Nếu chỉnh đoạn between thành từ 'L' đến 'O' thì mới tìm được Nancy ạ?

Cách 2: dùng IN
select FirstName, LastName, FirstName+' '+LastName Name, Country from Employees
where Country='USA' and left(FirstName, 1) in ('L', 'M', 'N') order by Name
--> Kết quả: 3

NgaVN-dx
Автор

Em xin giải bài tập ạ
SELECT *
FROM [dbo].[Orders]
WHERE [OrderDate] BETWEEN '1997-01-01'and '1997-12-31' and [ShipVia] = 3;
***Thử thách:
Hãy liệt kê các sản phẩm có giá vận chuyển Freight trong khoảng [100-200] đô la

kentry
Автор

Challenge:
Liệt kê danh sách các nhà cung cấp có số lượng hàng tồn kho từ 10- 50 và có số lần đặt hàng lại (reorder level) >5

Amemistery
Автор

Em gửi câu trả lời
SELECT *
FROM DBO.Orders
WHERE (OrderDate BETWEEN '1997-01-01' AND '1997-12-31') AND ShipVia=3;
(122 rows affected)

phucnguyennguyen-yqhn
Автор

Em gửi đáp an bài tập :
Select *
from Orders
where (OrderDate between '1997-1-1' and '1997-12-31') AND (ShipVia='3')

Thử thách :
1. Tính giá trung bình của các sản phẩm có ngày đặt hàng trong khoảng từ ngày 1/1/1996 đến ngày 31/7/1997
2. Liệt kê tất cả các sản phẩm có đơn giá trong khoảng từ 50 đến 100 và Category=1

cuctran
Автор

(phút 8:15) giá bán trong khoảng từ 10 đến 20 thì mình không lấy 2 giá trị 10 và 20 chứ ạ ?? khi đề bài yêu cầu trong đoạn thì UnitPrice >= 10 and UnitPrice <= 20

vuhuyle
Автор

--BT1: Lay danh sach cac don dat hang co ngay dat hang trong
--khoang tu ngay 1/1/1997 den ngay 31/12/1997 va duoc
--van chuyen bang duong tau thuy (ShipVia=3)
SELECT *
FROM [dbo].[Orders]
WHERE ([OrderDate] BETWEEN '1997-01-01' AND '1997-12-31' ) AND [ShipVia] = 3;
Em cảm ơn thầy ạ!

DũngNguyễn-nzc
Автор

--BT THỬ THÁCH: Lấy 10 đơn đặt hàng có ngày đặt 1/1/1977 đến 31/12/1997 và được vận chuyển bằng đường tàu thủy (ShipVia=3).
-- Sắp xếp OrderID tăng dần

.
.
.
SELECT TOP 10 *
FROM Orders
WHERE ShipVia=3 AND [OrderDate] BETWEEN '1997-01-01 00:00:00.000' AND '1997-12-31 00:00:00.000'
ORDER BY OrderID ASC.

BT thử thách 2: Lấy danh sách các đơn hàng có ShipCountry từ B-N. Sắp xếp theo thứ tự từ B-N
.
.
.
SELECT *
FROM Orders
WHERE ShipCountry BETWEEN 'B' AND 'N'
ORDER BY ShipCountry ASC

trananhquan
Автор

Của em phải code Date dạng "1996-07-30 00:00:00.000' giống trong bảng thì nó mới chạy ạ

trananhquan
Автор

Bai 1
select*
from Orders
where OrderDate between '1997-01-01'and '1997-12-31' and shipperId = 3
Bai 2

.nguyenduyhung
Автор

--1/ Lấy danh sách các đơn đặt hàng có ngày đặt hàng trong khoảng từ ngày
-- 1/1/1997 đến ngày 31/12/1997 và được vận chuyển bằng đường thủy (ShipVia = 3)
SELECT *
FROM Orders
WHERE OrderDate BETWEEN '1997-01-01' AND '1997-12-31' AND ShipVia = 3;

trongtranphuc
Автор

-- Cau 1:
select * from orders as o
where orderdate between '1997-01-01' and '1997-12-31' and ShipVia = 3

select * from orders as o
where OrderDate >= '1997-01-01' and OrderDate <= '1997-12-31' and ShipVia = 3

vuthanhkhang