Em cảm ơn bài giảng ạ --BT1: Hãy lọc ra những thành phố có số lượng đơn hàng >16 và sắp xếp theo tổng số lượng giảm dần SELECT ShipCity, COUNT(OrderID) AS [TotalOrders] FROM dbo.Orders GROUP BY ShipCity HAVING COUNT(OrderID)>16 ORDER BY COUNT(OrderID) DESC; --TT1: Lấy danh sách sản phẩm có tổng số lượng >75, có tỷ lệ giảm giá trung bình >7%, và sắp xếp theo tỷ lệ giảm giá trung bình giảm dần SELECT ProductID, SUM(Quantity) AS [TotalQuantity], AVG(Discount) AS [AVGDiscount] FROM dbo.[Order Details] GROUP BY ProductID HAVING SUM(Quantity)>75 AND AVG(Discount)>0.07 ORDER BY AVG(Discount) DESC; --TT2: Lấy danh sách các quốc gia tên có chứa ký tự 'e' và 'a' , có tổng số lượng các thành phố >2 và tổng số lượng khách hàng 2 AND COUNT(CustomerID)
1. SELECT [ProductID], SUM([Quantity]) AS [SUM SP], AVG([Discount]) AS [AVG DISCOUNT] FROM [dbo].[Order Details] GROUP BY [ProductID] HAVING AVG([Discount]) > 0.07 AND SUM([Quantity]) > 75 ORDER BY AVG([Discount]) DESC; 2. SELECT [Country], COUNT([City]) AS [SL CITY], COUNT([CustomerID]) AS [SL KH] FROM Customers WHERE [Country] LIKE '%[ea]%' GROUP BY [Country] HAVING COUNT([City]) > 2 AND COUNT([CustomerID]) < 10 ORDER BY [Country];
Em cảm ơn thầy ạ Bài tập 1: SELECT [ShipCity], COUNT([OrderID]) AS [Số lượng đơn hàng] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])> 16 ORDER BY COUNT([OrderID]) DESC; Thử thách: Hãy liệt kê các quốc gia có số lượng khách hàng lớn hơn 5
Em cảm ơn thầy ạ select ShipCountry, count(o.OrderID) as [total order] from Orders o group by ShipCountry having count(o.OrderID) > 16 order by count(o.OrderID) desc
Год назад+1
cảm ơn anh ạ SELECT [ShipCity], COUNT(OrderID) AS [số lượng đơn hàng] FROM dbo.Orders GROUP BY [ShipCity] HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) DESC
Em cảm ơn thầy ạ -- Btap : Lọc ra những thành phố có tổng số lượng đơn hàng > 16, sắp xếp theo giảm dần SELECT [ShipCity],COUNT([OrderID]) AS [TotalOrders] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
--bài tập:hãy lọc ra những đơn hàng thành phố --có số lượng đơn hàng > 16 --và sắp xếp theo tổng số lượng giảm dần SELECT ShipCity, COUNT(OrderID) as "số lượng đơn hàng" FROM Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) desc
Em xin cảm ơn video của anh ạ. Em gửi đáp án bài tập : Select ShipCity , Count(OrderID) as 'Total Order' from Orders group by ShipCity having Count(OrderID)>16 order by Count(OrderID) DESC Thử thách : 1. Lọc ra những sản phẩm có tổng số lượng hàng trong kho lớn hơn 100 và sắp xếp giảm dần theo tổng số lượng 2. Lọc ra những đơn hàng được giao đến LonDon và có tổng số tiền vận chuyển lớn hơn 50, sắp xếp giảm dần tổng số tiền vận chuyển
--1. Lọc ra những sản phẩm có tổng số lượng hàng trong kho lớn hơn 100 và sắp xếp giảm dần theo tổng số lượng SELECT [ProductName], SUM ([UnitsInStock]) AS [TOTALINSTOCK] FROM [dbo].[Products] GROUP BY [ProductName] HAVING SUM ([UnitsInStock]) > 100 ORDER BY SUM ([UnitsInStock]) DESC --2. Lọc ra những đơn hàng được giao đến LonDon và có tổng số tiền vận chuyển lớn hơn 50, sắp xếp giảm dần tổng số tiền vận chuyển SELECT [OrderID], [ShipCity], SUM ([Freight]) AS [TOTALFREIGHT] FROM [dbo].[Orders] WHERE [ShipCity] = 'LONDON' GROUP BY [OrderID], [ShipCity] HAVING SUM ([Freight]) >50 ORDER BY SUM ([Freight]) DESC
Ngày 14/03/2024 Em cảm ơn thầy ạ. Hôm nay quá vui vì đã đặt được câu hỏi rất dài và giải chi tiết nó, câu hỏi có ý theo đề bài và kèm cặp nhiều phần trước mn thử đọc và cố gắng làm nhé!! Hãy cố lên nào. Sau đây là phần bài tập và câu hỏi: --Làm bài tập. --Bài 1: hãy lọc ra những thành phố có số lượng đơn hàng > 16 --và sắp xếp theo tổng số lượng giảm dần. select ShipCity, count(OrderID) as "TotalOrders" from Orders group by shipCity having count(OrderID) > 16 order by "TotalOrders" desc; --Đặt câu hỏi. --Câu hỏi 1:Hãy liệt kê những mã sản phẩm trong bảng "Order Details" và --tính tổng số lượng đơn hàng > 550 theo từng sản phẩm --tính trung bình giá của số lượng đơn hàng theo từng loại mã sản phẩm, tìm các giá trị lớn hơn 1700 --Sắp xếp giá trị trung bình giảm dần. select ProductID, sum(Quantity) as "TotalQuantity", avg(UnitPrice) as "TotalUnitPrice" from [Order Details] group by ProductID having sum(Quantity) > 550 and avg(UnitPrice) > 1700 order by "TotalUnitPrice" desc; --Câu hỏi 2: hãy liệt kê mã khách hàng trong bảng order ở năm 1996 --Sắp Xếp mã khách hàng theo thứ tự tăng dần --tính giá trị min và max giá vận chuyển theo từng thành phố của khách hàng --đếm xem có bao nhiêu đơn hàng theo từng mã khách hàng --tính giá vận chuyển trung bình theo từng mã khách hàng mà lớn hơn 40 select CustomerID, ShipCity, Min(Freight) as "MinFreight", Max(Freight) as "MaxFreight", avg(Freight) as "AvgFreight" from Orders where year(ShippedDate) = 1996 group by CustomerID, ShipCity having avg(Freight) > 40 order by CustomerID asc;
2. SELECT [CustomerID], MIN([Freight]) AS [MIN], MAX([Freight]) AS [MAX], COUNT ([OrderID]) AS [SL ORDER], AVG(Freight) AS [AVG FREIGHT] FROM [dbo].[Orders] GROUP BY [CustomerID] HAVING AVG(Freight) > 40 ORDER BY [CustomerID];
Góp ý chút ạ về bài: Hay cho biet tong so tien van chuyen cua tung thang -- trong nua nam sau cua nam 1996, sap xep theo thang tang dan => Cách có thể áp dụng Having vào. select SUM(freight) as 'TotalBill', MONTH(shippeddate) as 'Month' from Orders where year(ShippedDate)=1996 group by MONTH(shippeddate) having MONTH(shippeddate) > 6 order by MONTH(shippeddate) asc; Nó vẫn ra kq đúng. Mọi có thể xem tham khảo thêm.
VD2: Mình có giải theo Having, mọi người có thể tham khảo ạ SELECT MONTH([ShippedDate]) AS [Month], SUM([Freight]) AS [TotalFreight], YEAR([ShippedDate]) AS [Year] FROM [dbo].[Orders] WHERE YEAR([ShippedDate]) = 1996 GROUP BY MONTH([ShippedDate]),YEAR([ShippedDate]) HAVING MONTH([ShippedDate]) >= 6 ORDER BY MONTH([ShippedDate]) ASC
Em cảm ơn bài giảng select ShipCity, count (OrderID) as [TotalOrder] from Orders group by ShipCity having count(OrderID)>16 order by count(OrderID) desc;
-- bài tập: hãy lọc ra những thành phố có số lượng đơn hàng >16 và sắp --xếp theo tổng số lượng giảm dần SELECT [ShipCity],COUNT([ShipCity]) AS [TotalOrders] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([ShipCity])>16 ORDER BY COUNT([ShipCity]) DESC ; -- Bài tập: Lọc ra những khách hàng từ Đức (Germany) có tổng số tiền vận --chuyển (Freight) lớn hơn $1000, và sắp xếp theo tổng số tiền vận --chuyển giảm dần. SELECT [CustomerID], SUM([Freight]) AS [TotalFreight] FROM [dbo].[Orders] WHERE [ShipCountry]='Germany' GROUP BY [CustomerID] HAVING SUM([Freight])>1000 ORDER BY SUM([Freight]) DESC; e cảm ơn thầy nhiều❤❤❤
BT: Lấy ra ID sản phẩm trong bảng order datails, sắp xếp tăng dần theo sản phẩm ĐK1: hãy tính tổng thành tiền của từng sản phẩm trong đó có cả mã giảm giá ĐK2: chỉ xét những điều kiện có ID_orders lấy 2 chữ số đầu chữ số t3 thì từ (2-4) sau đó lấy hết ĐK3: tổng thành tiền chỉ được trong khoản từ 500 - 2000
SELECT [OrderID], [ProductID], SUM(UnitPrice * Quantity * (1 - Discount)) AS [TỔNG SỐ TIỀN] FROM [dbo].[Order Details] WHERE [OrderID] LIKE '__[2-4]%' GROUP BY [OrderID], [ProductID] HAVING SUM(UnitPrice * Quantity * (1 - Discount)) BETWEEN 500 AND 2000 ORDER BY [ProductID] ASC;
--BT1: hãy lọc ra những thành phố có số lượng đơn hàng >16, và sắp xếp theo số lượng giảm dần select[ShipCity], count([OrderID]) as [Số đơn hàng] from [dbo].[Orders] group by [ShipCity] having count([OrderID])>16 order by count([OrderID]) desc -> kết quả 13 rows thử thách: câu 1: hãy lọc ra các khách hàng có tổng số đơn hàng đã đặt trong năm 1996 lớn hơn 2, sắp xếp theo thứ tự giảm dần, dữ liệu lấy trong bảng Orders select[CustomerID], count([OrderID]) as [tổng số đơn hàng] from [dbo].[Orders] where year([OrderDate]) = '1996' group by [CustomerID], year([OrderDate]) having count([OrderID])>2 order by count([OrderID]) desc;
-- Lọc ra những thành phố có số lượng đơn hàng lớn hơn > 16 và sắp xếp tổng số lượng giảm dần SELECT [ShipCity], COUNT([OrderID]) AS [Total_Order_Of_City] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY COUNT([OrderID]) DESC; Em cảm ơn anh ạ!
Bài tập 1: SELECT O.ShipCity, COUNT(O.ORDERID) AS [SUMOFORDERS] FROM ORDERS AS O GROUP BY O.ShipCity HAVING COUNT(*) > 16 ORDER BY COUNT(O.ORDERID) DESC; Câu hỏi 1: liệt kê những khách hàng sống tại london có nhiều hơn 5 đơn đặt hàng, sắp xếp giảm dần theo tổng số đơn ( bảng orders) Câu hỏi 2: liệt kê số lượng loại hàng (categoryid) của từng nhà cung cấp có đơn giá nằm trong khoảng [20,40]
Thử thách 1: lọc ra thành phố có trung bình phí vận chuyển (freight) > 100 và sắp xếp theo thứ tự giảm dần của trung bình phí vận chuyển từ bảng orders Thử thách 2: lọc ra mã các nhà cung cấp có số lượng đơn hàng đã được đặt UnitsOnOrder > 100 từ bảng Products
SELECT [ShipCity], COUNT([OrderID]) FROM [dbo].[Orders] GROUP BY ShipCity HAVING COUNT([OrderID]) >16 ORDER BY COUNT([OrderID]) DESC bạn nào học cấp tốc một mạch đến bài 21 như mình ko :)
Bài tập 1: --Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp sếp theo tổng số lượng giảm dần SELECT ShipCity, COUNT(OrderID) AS NumberOrder FROM dbo.Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) DESC Câu hỏi 1. Lọc ra các nước (ShipCountry) có trung bình giá vận chuyển < 500, sắp xếp theo giá trị giảm dần của giá vận chuyển Câu hỏi 2. Lọc ra Tên, địa chỉ Ship có Tổng Giá vận chuyển ở Quý 1 năm 1997 > 500, sắp xếp theo giá trị giảm dần của quý 1.
Date: August tenth -- Lọc ra những thành phố có lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần SELECT [ShipCity], COUNT([OrderID]) AS "TotalOrders" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY COUNT([OrderID]) DESC
SELECT ShipCity,COUNT([OrderID]) AS [TotalOrder] FROM [dbo].[Orders] GROUP BY ShipCity HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC; 1. Lọc ra các nhà cung cấp có tổng số lượng đặt hàng (UnitsOnOrder) > 40, tổng số lượng đặt hàng lại (ReorderLevel) >20, và sắp xếp theo thứ tự giảm dần của tổng số lượng đặt hàng. 2. Lọc ra những sản phẩm có tổng số lượng(Quantity) lớn hơn 400 dựa trên bảng Order Details.
câu hỏi 1: Hãy lọc ra tổng chi phí vận chuyển theo theo từng quốc gia và đơn hàng từ năm 1995 đến năm 1997 đồng thời lọc những đơn hàng giao đến các quốc gia khác uk và germany và có tổng phí vận chuyển lớn hơn 500. Em cảm ơn Thầy
--Bài tập về nhà : Hãy lọc ra những thành phố có số lượng đơn hàng lớn hơn 16 và sắp xếp theo thứ tự giảm dần SELECT [ShipCity], Count([OrderID]) as TotalOrder FROM dbo.Orders --WHERE GROUP BY [ShipCity] HAVING Count([OrderID])>16 ORDER BY Count([OrderID]) DESC;
-- Bài tập 1: Hãy lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần.(Orders) SELECT [ShipCity],COUNT([OrderID]) AS [TitleOrderID] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
BT SELECT[ShipCity], COUNT([OrderID]) AS [TONG DON HANG] FROM[dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) >16 ORDER BY COUNT([OrderID]) DESC; 1. Hãy cho biết số lượng khách hàng ở mỗi nước, chỉ lấy danh sách ở các nước có nhiều hơn 5 KH và sắp xếp theo thứ tự tăng dần 2. Hãy lọc ra số lượng khách hàng đặt trong tháng 5 và chỉ lấy những khách hàng có số lượng nhỏ hơn 3 và sắp xếp tên theo thứ tự tăng dần
-- Bài tập 1 SELECT ShipCity, COUNT(OrderID) AS 'Total Orders' FROM Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) DESC; -- Thử thách 1 -- Thống kê ra các khách hàng đã đặt hơn 20 đơn hàng từ bảng Order -- Thử thách 2 -- Thống kê ra các nhân viên đã giao hơn 70 đơn hàng từ bảng Order
-- Lọc ra những tp có slg đơn hàng > 16 và sxep theo tổng slg giảm dần SELECT [ShipCity], COUNT([OrderID]) AS [COUNT] FROM [dbo].[Orders] --WHERE GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC
-- Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp tổng số lượng giảm dần select [ShipCity], count([OrderID]) as Number from Orders group by [ShipCity] Having count([OrderID]) > 16 order by count([OrderID]) desc;
5:55 mọi người cho mình hỏi khi đặt tên count ([OrderID]) là [total order] mà khi xuống having mình k thể dùng [total order] >20 mà chỉ được dùng count ([OrderID]) >20 ạ
bài tập: viết câu lệnh SQL lấy ra những đơn hàng gửi đến thành phố có số lượng đơn hàng lớn hơn 16 SELECT ShipCity, COUNT(OrderID) as [số đơn hàng] FROM Orders GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY COUNT(OrderID) DESC;
Em gửi phần bài tập ạ #1 Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần SELECT ShipCity , COUNT (OrderID) AS [SL Đơn hàng] FROM NORTHWND.dbo.Orders GROUP BY ShipCity HAVING COUNT (OrderID) > 16 ORDER BY COUNT (OrderID) DESC #2 Hãy đặt 2 câu hỏi để giúp các bạn khác luyện tập câu lệnh HAVING Câu hỏi 1: Hãy lấy ra những đơn hàng >10 với ShipVia = 3 cùng với những thành phố thuộc mã ship này Câu hỏi 2: Hãy lấy ra những sản phẩm có giá trung bình > 12 và hàng tồn trong kho lớn hơn 10 với nhà cung cấp có mã khác 5,7,9
Em gửi anh câu trả lời SELECT ShipCity, Count (OrderID) AS "NumbersofOrder" FROM dbo.Orders GROUP BY ShipCity HAVING Count (OrderID)>16; (13 rows affected)
select ShipCity, count(CustomerID) as 'So luong hang cua tung thanh pho' from dbo.Orders group by ShipCity having count(CustomerID) > 16 order by count(CustomerID) desc
--BT1: Hãy lọc ra những thành phố có số lượng đơn đặt hàng > 16 và sắp xếp theo tổng số lượng giảm dần Select o.ShipCity, Count(o.[OrderID]) as [TotalOrders] From [dbo].[Orders] as o Group by o.ShipCity Having Count(o.[OrderID]) > 16 --Challenges1: Viết câu lệnh SQL tìm ra khách hàng có nhiều hơn 5 đơn đặt hàng vào tháng 7 Select o.CustomerID, MONTH(o.OrderDate) as [MONTH], Count(O.OrderID) as [NumberofOrder] From [dbo].[Orders] as o Where MONTH(o.OrderDate) = 7 Group by MONTH(o.OrderDate), o.CustomerID Having Count(O.OrderID) >= 2 --Challenges2: Viết câu lệnh SQL tìm ra số lượng các thành phố mà khách hàng sinh sống, các thành phố có lượng khách hàng lớn hơn 2, sắp xếp A_Z của tên thành phố Select c.City, Count(CustomerID) as [customer lives city] From [dbo].[Customers] as c Group by c.City Having Count(CustomerID) > 2
-- Hay loc ra nhung thanh pho co so luong don hang > 16 -- va sap xep theo tong so luong giam dan SELECT o.ShipCity, COUNT(o.OrderID) AS [Total of orders] FROM Orders AS o GROUP BY o.ShipCity HAVING COUNT(o.OrderID) > 16;
Bài tập : SELECT ShipCity, COUNT(OrderID) as [NumberOfOrder] FROM dbo.Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) DESC Câu hỏi: Lọc ra những quốc giacó số khách hàng đặt hàng lớn hơn 3 theo thứ tự giảm dần SELECT Country, COUNT(CustomerID) as [NumberOfCustomer] FROM dbo.Customers GROUP BY Country HAVING COUNT(CustomerID) > 3 ORDER BY COUNT(CustomerID) DESC
--bài tập:hãy lọc ra những thành phố có số lượng đơn hàng >16 --và sắp xếp theo tổng số lượng giảm dần. SELECT [ShipCountry], COUNT([OrderID]) AS [Số lượng đơn hàng] FROM [dbo].[Orders] --WHERE GROUP BY [ShipCountry] HAVING COUNT([OrderID]) >16 ORDER BY COUNT([OrderID]) DESC;
--BT -- -- Hay loc ra cac thanh pho co so luong don hang > 16 va sap xep giam dan select ShipCity as'CITY' , COUNT(OrderID) as'Don hang' from [Orders] Group by ShipCity Having COUNT(OrderID) > 16 Order by COUNT(orderID) DESC;
-- Bài tập SELECT ShipCity, COUNT(OrderID) AS [Total Order] FROM dbo.Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY [Total Order] DESC -- Thử thách 1: Hiển thị ra những nhân viên giao nhiều hơn 10 đơn hàng theo từng tháng. -- Sắp xếp theo mã nhân viên -- Thử thách 2: Hiển thị ra các thành phố có khách hàng đặt nhiều hơn 10 sản phẩm
EM GỬI CÂU TRẢ LỜI BÀI TẬP Ạ: SELECT ShipCity , COUNT(OrderID) FROM Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY COUNT(OrderID) DESC EM CẢM ƠN THẦY
--Thử thách: Lọc ra những khách hàng có số lượng đơn hàng lớn hơn 5 trong năm 1997 -- Sắp xếp thứ tự số lượng đơn hàng giảm dần . . . . . Đáp án: SELECT CustomerID, COUNT(*) AS [Số lượng đơn hàng năm 1997] FROM Orders WHERE YEAR(OrderDate)='1997' GROUP BY CustomerID HAVING COUNT(*)>5 ORDER BY COUNT(*) DESC
phần ví dụ 3 em làm hơi dị tí select MONTH(ShippedDate) as 'tháng',SUM(Freight) 'tổng tiền vận chuyển' from Orders group by MONTH(ShippedDate) having MONTH(ShippedDate) >6 and SUM(Freight) > 1000 order by MONTH(ShippedDate) asc;
Phần bài tập 1: select ShipCity ,count(OrderID) as 'tổng đơn hàng' from Orders group by ShipCity having count(OrderID)>16 order by count(OrderID) desc;
em xin giải bài tập: SELECT ShipCity, COUNT(ShipCity) AS TotalOrdersShipCity FROM Orders GROUP BY ShipCity HAVING COUNT(ShipCity) > 16 ORDER BY TotalOrdersShipCity DESC; câu hỏi thử thách : -phần này đặt câu hỏi khó quá nên em chưa tự đặt được!
Em gửi bài tập ạ : SELECT[ShipCity],COUNT([OrderID]) AS "TONG SO DON HANG" FROM[dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
-- Giải BT1 SELECT [ShipCity] as "City" , count([OrderID]) as "Số đơn" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING count([OrderID]) >16 ORDER BY count([OrderID]) desc ; -- Thử thách -- 1. Liệt kê danh sách quốc gia có số đơn [20 , 50] , sắp xếp tăng dần (Bảng Orders). -- 2. Liệt kê danh sách Suppliers có tổng lượng hàng tồn lớn hơn 25 ( Bảng Products).
BT1: SELECT [ShipCity], COUNT(OrderID) AS [CountOrder] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY COUNT([OrderID]) DESC
E làm bài tập như vậy mà cứ báo lỗi không rõ sai chỗ nào ạ SELECT [ShipCity], COUNT([OrderID]) AS [TotalOrders] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) >16 ORDER BY COUNT([OrderID]) DESC
Ví dụ 2 e sửa thành lệnh having như này vẫn được phải k ạ SELECT MONTH([ShippedDate]) AS [Month], SUM ([Freight]) AS [TotalFreight] FROM[dbo].[Orders] GROUP BY MONTH([ShippedDate]),YEAR([ShippedDate]) HAVING MONTH([ShippedDate])>6 AND YEAR([ShippedDate])='1996' ORDER BY MONTH([ShippedDate]) ASC
SELECT ShipCity, COUNT(OrderID) AS [Số đơn hàng] FROM dbo.Orders GROUP BY ShipCity HAVING COUNT(OrderID) > 16 ORDER BY [Số đơn hàng] DESC; cám ơn anh :)
--BT1:Hay loc ra nhung thanh pho co so luong don hang>16 va --sap xep theo tong so luong giam dan. SELECT [ShipCity] , COUNT([OrderID]) AS [NumberOfOrders] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC
use NORTHWND select [ShipCity], count([OrderID]) as "Total Orders" from [dbo].[Orders] group by [ShipCity] having count([OrderID]) > 16 order by count([OrderID]) desc
-- Hãy lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp -- theo tổng số lượng giảm dần SELECT ShipCity, COUNT(*) AS [TotalOrder] FROM Orders GROUP BY ShipCity HAVING COUNT(*) > 16 ORDER BY COUNT(*) DESC -- Thử thách -- Hãy lọc ra những đơn hàng có tổng giá trị lơn hơn 1.000 -- Hãy lọc ra những sản phẩm theo nhà cung cấp có giá trung bình lớn hơn 500
-- Hãy lọc ra những sản phẩm theo nhà cung cấp có giá trung bình lớn hơn 500 SELECT [SupplierID], AVG([UnitPrice]) AS [GIÁ TB] FROM [dbo].[Products] GROUP BY [SupplierID] HAVING AVG([UnitPrice]) > 500
--BÀI TẬP 1: HÃY LỌC RA NHỮNG THÀNH PHỐ CÓ SỐ LƯỢNG ĐƠN HÀNG > 16 VÀ --SẮP XẾP THEO TỔNG SỐ LƯỢNG GIẢM DẦN SELECT [ShipCity], COUNT([OrderID]) AS [COUNT OrderID], SUM([OrderID]) AS [SUM OrderID] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY SUM([OrderID]) DESC; --THỬ THÁCH --1.HÃY LỌC RA NHỮNG SẢN PHẨM CÓ SỐ LƯỢNG LỚN 10 VÀ ĐƠN GIÁ TB GIẢM DẦN SELECT [ProductID], COUNT([Quantity]) AS [COUNT Quantity], AVG([UnitPrice]) AS [AVG UnitPrice] FROM [dbo].[Order Details] GROUP BY [ProductID] HAVING COUNT([Quantity]) > 10 ORDER BY AVG([UnitPrice]) DESC; --2 HÃY CHO BIẾT TỔNG SỐ TIỀN VẬN CHUYỂN CỦA TỪNG THÁNG TRONG NỮA NĂM --- CỦA NĂM 1996 , XẮP XẾP THEO NGÀY GIẢM DẦN --TỔNG TIỀN VẬN CHUYỂN < 5000$ SELECT SUM([Freight]) AS [SUM Freight], MONTH([ShippedDate]) AS [DAY] FROM [dbo].[Orders] WHERE [ShippedDate] BETWEEN '1996-07-04' AND '1996-12-30' GROUP BY MONTH([ShippedDate]) HAVING SUM([Freight]) < 5000 ORDER BY MONTH([ShippedDate]) DESC;
--THỬ THÁCH --1.HÃY LỌC RA NHỮNG SẢN PHẨM CÓ SỐ LƯỢNG LỚN 10 VÀ ĐƠN GIÁ TB GIẢM DẦN Select p.ProductID, p.UnitsInStock, AVG(p.UnitPrice) as [AVG] From [dbo].[Products] as p Where p.UnitsInStock > 10 Group by p.ProductID, p.UnitsInStock Order by AVG(p.UnitPrice) DESC; --2 HÃY CHO BIẾT TỔNG SỐ TIỀN VẬN CHUYỂN CỦA TỪNG THÁNG TRONG NỮA NĂM --- CỦA NĂM 1996 , XẮP XẾP THEO NGÀY GIẢM DẦN --TỔNG TIỀN VẬN CHUYỂN < 5000$ Select MONTH(o.ShippedDate) as [MONTH],SUM(o.[Freight]) as [Sumfreigh] From [dbo].[Orders] as o Where o.ShippedDate Between '1996-07-01' AND '1996-12-31' Group by MONTH(o.ShippedDate) Having SUM(o.[Freight]) < 5000
--bt1: --lọc ra những tp có sl đơn>16 --và sx theo tổng sl giảm dần SELECT [ShipCity], COUNT([OrderID]) FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS [số lượng đơn hàng] , SUM([OrderID]) AS [tổng số lượng] FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY SUM([OrderID]) DESC;
SELECT [SupplierID], SUM([UnitInStock]) AS [TotalUnit], AVG([UnitPrice]) AS [AVGprice] FROM Products GROUP BY [SupplierID] HAVING SUM([UnitInStock])>30 AND AVG([UnitPrice])
VD 3 , giải theo cách sử dụng HAVING sao lại sai được nhỉ bác? SELECT MONTH([ShippedDate]) AS "Tháng ship hàng", SUM[Freight] AS "Tiền vận chuyển" FROM[dbo].[Orders] GROUP BY MONTH([ShippedDate]) HAVING MONTH([ShippedDate]) > 6 AND YEAR([ShippedDate]) =1996 ORDER BY MONTH([ShippedDate]) ASC
nay rảnh xem lại, VD3 giải theo HAVING hay hơn, bài trên bị thiếu YEAR SELECT YEAR(o.ShippedDate) AS "Năm", MONTH(o.ShippedDate) AS "Tháng", SUM(o.Freight) AS "Tổng tiền VC" FROM Orders o GROUP BY YEAR(o.ShippedDate),MONTH(o.ShippedDate) HAVING YEAR(o.ShippedDate) = 1996 AND MONTH(o.ShippedDate) > 6 ORDER BY MONTH(o.ShippedDate)
Anh/chị cho em hỏi ở VD số 2 em code là: SELECT [SupplierID], [UnitsInStock], [UnitPrice] FROM [dbo].[Products] GROUP BY [SupplierID], [UnitsInStock], [UnitPrice] HAVING SUM ([UnitsInStock]) >30 AND AVG ([UnitPrice]) 31 dòng khác với anh TITV (25 dòng). Em so thì thấy khác nhau ở chỗ sau SELECT phải thêm lệnh SUM ([UnitsInStock]) và AVG ([UnitPrice]). Anh/chị nào giải thích dùm em chỗ này với nha, mình đã có đk HAVING phía sau rồi, sau phải có SUM ([UnitsInStock]) và AVG ([UnitPrice]) sau SELECT nữa ah.
đề bài hỏi tổng số lượng và trung bình đơn giá thì phải hiển thị ra chơ, SELECT là để hiển thị ra đó, còn HAVING chỉ là lọc điều kiện sau GROUP BY thoi
Select MONTH(ShippedDate) as "Tháng xuất", SUM(Freight) as "Chi phí vận chuyển" From Orders where YEAR([ShippedDate])=1996 group by month(ShippedDate) having MONTH(ShippedDate)>6 order by MONTH([ShippedDate]) asc
-- LỌC RA NHỮNG THÀNH PHỐ CÓ SỐ LƯỢNG ĐƠN HÀNG > 16, VÀ SẮP XẾP THEO TỔNG SỐ LƯỢNG GIẢM DẦN SELECT [ShipCountry], COUNT([OrderID]) AS [TỔNG SỐ LƯỢNG ĐƠN HÀNG] FROM [dbo].[Orders] GROUP BY [ShipCountry] HAVING COUNT([OrderID]) > 16 ORDER BY COUNT([OrderID]) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS "Total Order" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) > 16 ORDER BY "Total Order" DESC; Kết quả 13 dòng
Ví dụ 3: Dùng Having được mà thầy, thậm chí cả Where luôn ạ, SELECT MONTH (O.ShippedDate) AS "Tháng", SUM (O.Freight) AS "Tổng tiền", YEAR (O.ShippedDate) AS "Năm" FROM [dbo].[Orders] AS O WHERE YEAR (O.ShippedDate) = 1996 -- Đều đúng GROUP BY MONTH (O.ShippedDate), YEAR (O.ShippedDate) HAVING MONTH (O.ShippedDate) >= 6 -- AND YEAR (O.ShippedDate) = 1996 ORDER BY MONTH (O.ShippedDate) ASC
Giải bt ạ, cảm ơn thầy nhiều ạ! SELECT [ShipCity], COUNT([OrderID])AS"TotalOrder" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY SUM([OrderID]) DESC;
-Bài tập 1: Lọc ra những thành phố -Có số lượng đơn hàng >16 -Sắp xếp theo tổng số lượng giảm dần SELECT[ShipCity], COUNT([OrderID]) AS "Số lượng đơn hàng >16" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID]) >16 ORDER BY COUNT([OrderID]) DESC -Bài tập challenge - Lọc ra những quốc gia có số lượng nhà cung cấp >2 SELECT [Country], COUNT([SupplierID]) FROM [dbo].[Suppliers] GROUP BY [Country] HAVING COUNT([SupplierID])>2 ORDER BY COUNT([SupplierID]) ASC Em cảm ơn anh và mọi người ạ
BT1 SELECT [ShipCity], COUNT([OrderID]) AS [TotalOrder] FROM [dbo].[Orders] --WHERE GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
SELECT *, SUM([Freight]) AS [TotalFreight], MONTH[ShippedDate] AS [Month] FROM Orders GROUP BY MONTH[ShippedDate] HAVING MONTH[ShippedDate]>6 AND SUM([Freight])>1000 ORDER BY MONTH[ShippedDate] ASC;
Thử thách: Lấy danh sách các nhân viên (EmployeeID, LastName, FirstName) và số lượng đơn hàng mà họ đã xử lý trong năm 1997, nhưng chỉ bao gồm những nhân viên đã xử lý ít nhất 15 đơn hàng trong năm đó. Select e.EmployeeID, e.LastName, e.FirstName, COUNT(o.OrderID) as SoLuongDonHangXuLy From Employees as e, Orders as o Where e.EmployeeID = o.EmployeeID AND YEAR(o.OrderDate) = 1997 Group By e.EmployeeID, e.LastName, e.FirstName Having COUNT(o.OrderID) >= 15; Hoặc Select o.EmployeeID, e.LastName, e.FirstName, COUNT(o.OrderID) as SoLuongDonHangXuLy From Employees as e, Orders as o Where e.EmployeeID = o.EmployeeID AND YEAR(o.OrderDate) = 1997 Group By o.EmployeeID, e.LastName, e.FirstName Having COUNT(o.OrderID) >= 15;
-- lọc ra những thành phố có số lượng đơn hàng >16, TỔNG FREIGHT LỚN HƠN 10 -- và sắp xếp theo tổng số luộng giảm dần -- và shipname bắt đầu t và vị trí thứ 2 hoặc thứ 3 phải khác k và e VÀ LỌC RA CÁC order trong THÁNG 7 CỦA NĂM 1996 --SELECT * FROM dbo.Orders SELECT SUM(OrderID) AS [tông đơn hàng], SUM(Freight) AS [tổng freight], MONTH(OrderDate) AS [month], YEAR(OrderDate) AS [year],shipname FROM dbo.Orders --GROUP BY Freight,ShipName,OrderID, YEAR(OrderDate), MONTH(OrderDate) WHERE shipname LIKE 't[^k,e]%' AND (MONTH(OrderDate)=7 AND YEAR(OrderDate)=1996) -- GROUP BY Freight,ShipName,OrderID, YEAR(OrderDate), MONTH(OrderDate) -- trong group by chỉ nhóm: shipname,year(orderdate), month(orderdate) GROUP BY ShipName, YEAR(OrderDate),MONTH(OrderDate) HAVING SUM(OrderID) >16 AND SUM(Freight)>10 ORDER BY SUM(OrderID) DESC -- lọc ra những thành phố có số lượng đơn hàng >16, -- và sắp xếp theo tổng số luộng giảm dần -- và shipname bắt đầu bằng t và vị trí thứ 2 hoặc thứ 3 phải khác k và e SELECT * FROM dbo.Orders SELECT sum (OrderID),ShipCity,shipvia FROM dbo.Orders WHERE ShipName LIKE 'T[^k,e]%' GROUP BY ShipCity,ShipVia, OrderID HAVING SUM (OrderID)>16 ORDER BY SUM(OrderID) DESC
SELECT MONTH(ShippedDate), SUM(Freight) AS [SumFreight] FROM Orders WHERE YEAR(OrderDate) = 1996 GROUP BY MONTH(ShippedDate) HAVING MONTH(ShippedDate)> 6 ORDER BY MONTH(ShippedDate) ASC; SELECT ShipCity, COUNT(OrderID) AS [TotalOrders] FROM Orders GROUP BY ShipCity HAVING COUNT(OrderID) >16 ORDER BY COUNT(OrderID) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS "Tong don hang" FROM [dbo].[Orders] GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC;
Em cảm ơn bài giảng ạ
--BT1: Hãy lọc ra những thành phố có số lượng đơn hàng >16 và sắp xếp theo tổng số lượng giảm dần
SELECT ShipCity, COUNT(OrderID) AS [TotalOrders]
FROM dbo.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID)>16
ORDER BY COUNT(OrderID) DESC;
--TT1: Lấy danh sách sản phẩm có tổng số lượng >75, có tỷ lệ giảm giá trung bình >7%, và sắp xếp theo tỷ lệ giảm giá trung bình giảm dần
SELECT ProductID,
SUM(Quantity) AS [TotalQuantity],
AVG(Discount) AS [AVGDiscount]
FROM dbo.[Order Details]
GROUP BY ProductID
HAVING SUM(Quantity)>75 AND AVG(Discount)>0.07
ORDER BY AVG(Discount) DESC;
--TT2: Lấy danh sách các quốc gia tên có chứa ký tự 'e' và 'a' , có tổng số lượng các thành phố >2 và tổng số lượng khách hàng 2 AND COUNT(CustomerID)
tt2 câu where như vậy thì shipcountry chỉ bao gồm hoặc e hoặc a thôi b, ko bao gồm cả 2
where Country like '%e%a%' or Country like '%a%e%'
1.
SELECT [ProductID], SUM([Quantity]) AS [SUM SP], AVG([Discount]) AS [AVG DISCOUNT]
FROM [dbo].[Order Details]
GROUP BY [ProductID]
HAVING AVG([Discount]) > 0.07 AND SUM([Quantity]) > 75
ORDER BY AVG([Discount]) DESC;
2.
SELECT [Country], COUNT([City]) AS [SL CITY], COUNT([CustomerID]) AS [SL KH]
FROM Customers
WHERE [Country] LIKE '%[ea]%'
GROUP BY [Country]
HAVING COUNT([City]) > 2 AND COUNT([CustomerID]) < 10
ORDER BY [Country];
@@chungkhoan_anonymous đáp án là Argentina 3 3
Venezuela 4 4
đúng hong bạn
Em cảm ơn thầy ạ
Bài tập 1:
SELECT [ShipCity], COUNT([OrderID]) AS [Số lượng đơn hàng]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])> 16
ORDER BY COUNT([OrderID]) DESC;
Thử thách:
Hãy liệt kê các quốc gia có số lượng khách hàng lớn hơn 5
Em cảm ơn thầy ạ
select ShipCountry, count(o.OrderID) as [total order] from Orders o
group by ShipCountry
having count(o.OrderID) > 16
order by count(o.OrderID) desc
cảm ơn anh ạ
SELECT [ShipCity],
COUNT(OrderID) AS [số lượng đơn hàng]
FROM dbo.Orders
GROUP BY [ShipCity]
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC
Em cảm ơn thầy ạ
-- Btap : Lọc ra những thành phố có tổng số lượng đơn hàng > 16, sắp xếp theo giảm dần
SELECT [ShipCity],COUNT([OrderID]) AS [TotalOrders]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
--bài tập:hãy lọc ra những đơn hàng thành phố
--có số lượng đơn hàng > 16
--và sắp xếp theo tổng số lượng giảm dần
SELECT ShipCity, COUNT(OrderID) as "số lượng đơn hàng"
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) desc
Em xin cảm ơn video của anh ạ.
Em gửi đáp án bài tập :
Select ShipCity , Count(OrderID) as 'Total Order'
from Orders
group by ShipCity
having Count(OrderID)>16
order by Count(OrderID) DESC
Thử thách :
1. Lọc ra những sản phẩm có tổng số lượng hàng trong kho lớn hơn 100 và sắp xếp giảm dần theo tổng số lượng
2. Lọc ra những đơn hàng được giao đến LonDon và có tổng số tiền vận chuyển lớn hơn 50, sắp xếp giảm dần tổng số tiền vận chuyển
--1. Lọc ra những sản phẩm có tổng số lượng hàng trong kho lớn hơn 100 và sắp xếp giảm dần theo tổng số lượng
SELECT [ProductName], SUM ([UnitsInStock]) AS [TOTALINSTOCK]
FROM [dbo].[Products]
GROUP BY [ProductName]
HAVING SUM ([UnitsInStock]) > 100
ORDER BY SUM ([UnitsInStock]) DESC
--2. Lọc ra những đơn hàng được giao đến LonDon và có tổng số tiền vận chuyển lớn hơn 50, sắp xếp giảm dần tổng số tiền vận chuyển
SELECT [OrderID], [ShipCity], SUM ([Freight]) AS [TOTALFREIGHT]
FROM [dbo].[Orders]
WHERE [ShipCity] = 'LONDON'
GROUP BY [OrderID], [ShipCity]
HAVING SUM ([Freight]) >50
ORDER BY SUM ([Freight]) DESC
Ngày 14/03/2024
Em cảm ơn thầy ạ.
Hôm nay quá vui vì đã đặt được câu hỏi rất dài và giải chi tiết nó, câu hỏi có ý theo đề bài và kèm cặp nhiều phần trước mn thử đọc và cố gắng làm nhé!!
Hãy cố lên nào.
Sau đây là phần bài tập và câu hỏi:
--Làm bài tập.
--Bài 1: hãy lọc ra những thành phố có số lượng đơn hàng > 16
--và sắp xếp theo tổng số lượng giảm dần.
select ShipCity, count(OrderID) as "TotalOrders"
from Orders
group by shipCity
having count(OrderID) > 16
order by "TotalOrders" desc;
--Đặt câu hỏi.
--Câu hỏi 1:Hãy liệt kê những mã sản phẩm trong bảng "Order Details" và
--tính tổng số lượng đơn hàng > 550 theo từng sản phẩm
--tính trung bình giá của số lượng đơn hàng theo từng loại mã sản phẩm, tìm các giá trị lớn hơn 1700
--Sắp xếp giá trị trung bình giảm dần.
select ProductID,
sum(Quantity) as "TotalQuantity",
avg(UnitPrice) as "TotalUnitPrice"
from [Order Details]
group by ProductID
having sum(Quantity) > 550 and avg(UnitPrice) > 1700
order by "TotalUnitPrice" desc;
--Câu hỏi 2: hãy liệt kê mã khách hàng trong bảng order ở năm 1996
--Sắp Xếp mã khách hàng theo thứ tự tăng dần
--tính giá trị min và max giá vận chuyển theo từng thành phố của khách hàng
--đếm xem có bao nhiêu đơn hàng theo từng mã khách hàng
--tính giá vận chuyển trung bình theo từng mã khách hàng mà lớn hơn 40
select CustomerID, ShipCity,
Min(Freight) as "MinFreight",
Max(Freight) as "MaxFreight",
avg(Freight) as "AvgFreight"
from Orders
where year(ShippedDate) = 1996
group by CustomerID, ShipCity
having avg(Freight) > 40
order by CustomerID asc;
de loi cau 1
@@shidumdum ko phải lỗi đâu mà là ko có giá trị nào thỏa điều kiện bạn đó đưa ra á
Đề bạn ra đọc hơi rối, các câu sau đặt đề rõ hơn nha bạn. Mình cảm ơn bạn.
2.
SELECT [CustomerID], MIN([Freight]) AS [MIN], MAX([Freight]) AS [MAX],
COUNT ([OrderID]) AS [SL ORDER], AVG(Freight) AS [AVG FREIGHT]
FROM [dbo].[Orders]
GROUP BY [CustomerID]
HAVING AVG(Freight) > 40
ORDER BY [CustomerID];
Góp ý chút ạ
về bài: Hay cho biet tong so tien van chuyen cua tung thang
-- trong nua nam sau cua nam 1996, sap xep theo thang tang dan
=> Cách có thể áp dụng Having vào.
select SUM(freight) as 'TotalBill', MONTH(shippeddate) as 'Month'
from Orders
where year(ShippedDate)=1996
group by MONTH(shippeddate)
having MONTH(shippeddate) > 6
order by MONTH(shippeddate) asc;
Nó vẫn ra kq đúng. Mọi có thể xem tham khảo thêm.
VD2: Mình có giải theo Having, mọi người có thể tham khảo ạ
SELECT
MONTH([ShippedDate]) AS [Month],
SUM([Freight]) AS [TotalFreight],
YEAR([ShippedDate]) AS [Year]
FROM [dbo].[Orders]
WHERE YEAR([ShippedDate]) = 1996
GROUP BY MONTH([ShippedDate]),YEAR([ShippedDate])
HAVING MONTH([ShippedDate]) >= 6
ORDER BY MONTH([ShippedDate]) ASC
Em cảm ơn bài giảng
select ShipCity, count (OrderID) as [TotalOrder]
from Orders
group by ShipCity
having count(OrderID)>16
order by count(OrderID) desc;
-- bài tập: hãy lọc ra những thành phố có số lượng đơn hàng >16 và sắp
--xếp theo tổng số lượng giảm dần
SELECT [ShipCity],COUNT([ShipCity]) AS [TotalOrders]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([ShipCity])>16
ORDER BY COUNT([ShipCity]) DESC ;
-- Bài tập: Lọc ra những khách hàng từ Đức (Germany) có tổng số tiền vận
--chuyển (Freight) lớn hơn $1000, và sắp xếp theo tổng số tiền vận
--chuyển giảm dần.
SELECT [CustomerID],
SUM([Freight]) AS [TotalFreight]
FROM [dbo].[Orders]
WHERE [ShipCountry]='Germany'
GROUP BY [CustomerID]
HAVING SUM([Freight])>1000
ORDER BY SUM([Freight]) DESC;
e cảm ơn thầy nhiều❤❤❤
BT: Lấy ra ID sản phẩm trong bảng order datails, sắp xếp tăng dần theo sản phẩm
ĐK1: hãy tính tổng thành tiền của từng sản phẩm trong đó có cả mã giảm giá
ĐK2: chỉ xét những điều kiện có ID_orders lấy 2 chữ số đầu chữ số t3 thì từ (2-4) sau đó lấy hết
ĐK3: tổng thành tiền chỉ được trong khoản từ 500 - 2000
Câu hỏi hay quá! Cảm ơn bạn
cho xin đáp án
SELECT [OrderID], [ProductID],
SUM(UnitPrice * Quantity * (1 - Discount)) AS [TỔNG SỐ TIỀN]
FROM [dbo].[Order Details]
WHERE [OrderID] LIKE '__[2-4]%'
GROUP BY [OrderID], [ProductID]
HAVING SUM(UnitPrice * Quantity * (1 - Discount)) BETWEEN 500 AND 2000
ORDER BY [ProductID] ASC;
select ShipCity,COUNT(*) [Tổng số lượng đơn hàng] from orders as o
group by ShipCity
having COUNT(*)>16
order by COUNT(*) desc
Em cảm ơn anh ạ
--BT1: hãy lọc ra những thành phố có số lượng đơn hàng >16, và sắp xếp theo số lượng giảm dần
select[ShipCity], count([OrderID]) as [Số đơn hàng]
from [dbo].[Orders]
group by [ShipCity]
having count([OrderID])>16
order by count([OrderID]) desc
-> kết quả 13 rows
thử thách:
câu 1: hãy lọc ra các khách hàng có tổng số đơn hàng đã đặt trong năm 1996 lớn hơn 2, sắp xếp theo thứ tự giảm dần, dữ liệu lấy trong bảng Orders
select[CustomerID], count([OrderID]) as [tổng số đơn hàng]
from [dbo].[Orders]
where year([OrderDate]) = '1996'
group by [CustomerID], year([OrderDate])
having count([OrderID])>2
order by count([OrderID]) desc;
-- Lọc ra những thành phố có số lượng đơn hàng lớn hơn > 16 và sắp xếp tổng số lượng giảm dần
SELECT [ShipCity], COUNT([OrderID]) AS [Total_Order_Of_City]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY COUNT([OrderID]) DESC;
Em cảm ơn anh ạ!
Bài tập 1:
SELECT O.ShipCity, COUNT(O.ORDERID) AS [SUMOFORDERS]
FROM ORDERS AS O
GROUP BY O.ShipCity
HAVING COUNT(*) > 16
ORDER BY COUNT(O.ORDERID) DESC;
Câu hỏi 1: liệt kê những khách hàng sống tại london có nhiều hơn 5 đơn đặt hàng, sắp xếp giảm dần theo tổng số đơn ( bảng orders)
Câu hỏi 2: liệt kê số lượng loại hàng (categoryid) của từng nhà cung cấp có đơn giá nằm trong khoảng [20,40]
Thử thách 1: lọc ra thành phố có trung bình phí vận chuyển (freight) > 100 và sắp xếp theo thứ tự giảm dần của trung bình phí vận chuyển từ bảng orders
Thử thách 2: lọc ra mã các nhà cung cấp có số lượng đơn hàng đã được đặt UnitsOnOrder > 100 từ bảng Products
SELECT [ShipCity], COUNT([OrderID])
FROM [dbo].[Orders]
GROUP BY ShipCity
HAVING COUNT([OrderID]) >16
ORDER BY COUNT([OrderID]) DESC
bạn nào học cấp tốc một mạch đến bài 21 như mình ko :)
có tôi
Bài tập 1:
--Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp sếp theo tổng số lượng giảm dần
SELECT ShipCity, COUNT(OrderID) AS NumberOrder
FROM dbo.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC
Câu hỏi 1. Lọc ra các nước (ShipCountry) có trung bình giá vận chuyển < 500, sắp xếp theo giá trị giảm dần của giá vận chuyển
Câu hỏi 2. Lọc ra Tên, địa chỉ Ship có Tổng Giá vận chuyển ở Quý 1 năm 1997 > 500, sắp xếp theo giá trị giảm dần của quý 1.
Date: August tenth
-- Lọc ra những thành phố có lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần
SELECT [ShipCity], COUNT([OrderID]) AS "TotalOrders"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY COUNT([OrderID]) DESC
SELECT ShipCity,COUNT([OrderID]) AS [TotalOrder]
FROM [dbo].[Orders]
GROUP BY ShipCity
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
1. Lọc ra các nhà cung cấp có tổng số lượng đặt hàng (UnitsOnOrder) > 40, tổng số lượng đặt hàng lại (ReorderLevel) >20, và sắp xếp theo thứ tự giảm dần của tổng số lượng đặt hàng.
2. Lọc ra những sản phẩm có tổng số lượng(Quantity) lớn hơn 400 dựa trên bảng Order Details.
câu hỏi 1: Hãy lọc ra tổng chi phí vận chuyển theo theo từng quốc gia và đơn hàng từ năm 1995 đến năm 1997 đồng thời lọc những đơn hàng giao đến các quốc gia khác uk và germany và có tổng phí vận chuyển lớn hơn 500. Em cảm ơn Thầy
SELECT ShipCity, COUNT(OrderID) AS "so don hang"
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC;
em cảm ơn anh
--Bài tập về nhà : Hãy lọc ra những thành phố có số lượng đơn hàng lớn hơn 16 và sắp xếp theo thứ tự giảm dần
SELECT [ShipCity], Count([OrderID]) as TotalOrder
FROM dbo.Orders
--WHERE
GROUP BY [ShipCity]
HAVING Count([OrderID])>16
ORDER BY Count([OrderID]) DESC;
e cảm ơn thầy
-- Bài tập 1: Hãy lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần.(Orders)
SELECT [ShipCity],COUNT([OrderID]) AS [TitleOrderID]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
BT
SELECT[ShipCity], COUNT([OrderID]) AS [TONG DON HANG]
FROM[dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) >16
ORDER BY COUNT([OrderID]) DESC;
1. Hãy cho biết số lượng khách hàng ở mỗi nước, chỉ lấy danh sách ở các nước có nhiều hơn 5 KH và sắp xếp theo thứ tự tăng dần
2. Hãy lọc ra số lượng khách hàng đặt trong tháng 5 và chỉ lấy những khách hàng có số lượng nhỏ hơn 3 và sắp xếp tên theo thứ tự tăng dần
-- Bài tập 1
SELECT ShipCity, COUNT(OrderID) AS 'Total Orders'
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC;
-- Thử thách 1
-- Thống kê ra các khách hàng đã đặt hơn 20 đơn hàng từ bảng Order
-- Thử thách 2
-- Thống kê ra các nhân viên đã giao hơn 70 đơn hàng từ bảng Order
-- Lọc ra những tp có slg đơn hàng > 16 và sxep theo tổng slg giảm dần
SELECT [ShipCity], COUNT([OrderID]) AS [COUNT]
FROM [dbo].[Orders]
--WHERE
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC
-- Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp tổng số lượng giảm dần
select [ShipCity], count([OrderID]) as Number
from Orders
group by [ShipCity]
Having count([OrderID]) > 16
order by count([OrderID]) desc;
5:55 mọi người cho mình hỏi khi đặt tên count ([OrderID]) là [total order] mà khi xuống having mình k thể dùng [total order] >20 mà chỉ được dùng count ([OrderID]) >20 ạ
bài tập: viết câu lệnh SQL lấy ra những đơn hàng gửi đến thành phố có số lượng đơn hàng lớn hơn 16
SELECT ShipCity, COUNT(OrderID) as [số đơn hàng]
FROM Orders
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY COUNT(OrderID) DESC;
Em gửi phần bài tập ạ
#1 Lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp theo tổng số lượng giảm dần
SELECT
ShipCity
, COUNT (OrderID) AS [SL Đơn hàng]
FROM NORTHWND.dbo.Orders
GROUP BY ShipCity
HAVING COUNT (OrderID) > 16
ORDER BY COUNT (OrderID) DESC
#2 Hãy đặt 2 câu hỏi để giúp các bạn khác luyện tập câu lệnh HAVING
Câu hỏi 1: Hãy lấy ra những đơn hàng >10 với ShipVia = 3 cùng với những thành phố thuộc mã ship này
Câu hỏi 2: Hãy lấy ra những sản phẩm có giá trung bình > 12 và hàng tồn trong kho lớn hơn 10 với nhà cung cấp có mã khác 5,7,9
Em gửi anh câu trả lời
SELECT ShipCity, Count (OrderID) AS "NumbersofOrder"
FROM dbo.Orders
GROUP BY ShipCity
HAVING Count (OrderID)>16;
(13 rows affected)
select ShipCity, count(CustomerID) as 'So luong hang cua tung thanh pho'
from dbo.Orders
group by ShipCity
having count(CustomerID) > 16
order by count(CustomerID) desc
--BT1: Hãy lọc ra những thành phố có số lượng đơn đặt hàng > 16 và sắp xếp theo tổng số lượng giảm dần
Select o.ShipCity, Count(o.[OrderID]) as [TotalOrders]
From [dbo].[Orders] as o
Group by o.ShipCity
Having Count(o.[OrderID]) > 16
--Challenges1: Viết câu lệnh SQL tìm ra khách hàng có nhiều hơn 5 đơn đặt hàng vào tháng 7
Select o.CustomerID, MONTH(o.OrderDate) as [MONTH], Count(O.OrderID) as [NumberofOrder]
From [dbo].[Orders] as o
Where MONTH(o.OrderDate) = 7
Group by MONTH(o.OrderDate), o.CustomerID
Having Count(O.OrderID) >= 2
--Challenges2: Viết câu lệnh SQL tìm ra số lượng các thành phố mà khách hàng sinh sống, các thành phố có lượng khách hàng lớn hơn 2, sắp xếp A_Z của tên thành phố
Select c.City, Count(CustomerID) as [customer lives city]
From [dbo].[Customers] as c
Group by c.City
Having Count(CustomerID) > 2
-- Hay loc ra nhung thanh pho co so luong don hang > 16
-- va sap xep theo tong so luong giam dan
SELECT
o.ShipCity,
COUNT(o.OrderID) AS [Total of orders]
FROM Orders AS o
GROUP BY o.ShipCity
HAVING COUNT(o.OrderID) > 16;
Hôm qua fb làm một phen hú hồn ha thầy
Bài tập :
SELECT ShipCity, COUNT(OrderID) as [NumberOfOrder]
FROM dbo.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC
Câu hỏi:
Lọc ra những quốc giacó số khách hàng đặt hàng lớn hơn 3 theo thứ tự giảm dần
SELECT Country, COUNT(CustomerID) as [NumberOfCustomer]
FROM dbo.Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 3
ORDER BY COUNT(CustomerID) DESC
--bài tập:hãy lọc ra những thành phố có số lượng đơn hàng >16
--và sắp xếp theo tổng số lượng giảm dần.
SELECT [ShipCountry], COUNT([OrderID]) AS [Số lượng đơn hàng]
FROM [dbo].[Orders]
--WHERE
GROUP BY [ShipCountry]
HAVING COUNT([OrderID]) >16
ORDER BY COUNT([OrderID]) DESC;
--BT --
-- Hay loc ra cac thanh pho co so luong don hang > 16 va sap xep giam dan
select ShipCity as'CITY' , COUNT(OrderID) as'Don hang'
from [Orders]
Group by ShipCity
Having COUNT(OrderID) > 16 Order by COUNT(orderID) DESC;
-- Bài tập
SELECT ShipCity, COUNT(OrderID) AS [Total Order]
FROM dbo.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY [Total Order] DESC
-- Thử thách 1: Hiển thị ra những nhân viên giao nhiều hơn 10 đơn hàng theo từng tháng.
-- Sắp xếp theo mã nhân viên
-- Thử thách 2: Hiển thị ra các thành phố có khách hàng đặt nhiều hơn 10 sản phẩm
select shipcity , count(orderId) as totalOrder from orders group by shipcity having count(orderId) > 16 order by count(orderId) DESC
Select ShipCity, Count (OrderID) as "Tổng lượng đơn hàng"
From Orders
Group by ShipCity
Having Count (OrderID)> 16
Order by [Tổng lượng đơn hàng] desc
EM GỬI CÂU TRẢ LỜI BÀI TẬP Ạ:
SELECT
ShipCity
, COUNT(OrderID)
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC
EM CẢM ƠN THẦY
--Thử thách: Lọc ra những khách hàng có số lượng đơn hàng lớn hơn 5 trong năm 1997
-- Sắp xếp thứ tự số lượng đơn hàng giảm dần
.
.
.
.
.
Đáp án:
SELECT CustomerID, COUNT(*) AS [Số lượng đơn hàng năm 1997]
FROM Orders
WHERE YEAR(OrderDate)='1997'
GROUP BY CustomerID
HAVING COUNT(*)>5
ORDER BY COUNT(*) DESC
phần ví dụ 3 em làm hơi dị tí
select MONTH(ShippedDate) as 'tháng',SUM(Freight) 'tổng tiền vận chuyển'
from Orders
group by MONTH(ShippedDate)
having MONTH(ShippedDate) >6 and SUM(Freight) > 1000
order by MONTH(ShippedDate) asc;
Phần bài tập 1:
select ShipCity ,count(OrderID) as 'tổng đơn hàng'
from Orders
group by ShipCity
having count(OrderID)>16
order by count(OrderID) desc;
btap1: SELECT [ShipCity], COUNT([OrderID]) AS [SLDonHang] FROM GROUP BY [ShipCity] HAVING COUNT([OrderID])>16 ORDER BY COUNT([OrderID]) DESC
em xin giải bài tập:
SELECT ShipCity, COUNT(ShipCity) AS TotalOrdersShipCity
FROM Orders
GROUP BY ShipCity
HAVING COUNT(ShipCity) > 16
ORDER BY TotalOrdersShipCity DESC;
câu hỏi thử thách :
-phần này đặt câu hỏi khó quá nên em chưa tự đặt được!
câu hỏi 2: Hãy tính tổng số lượng và giá trung bình cho mỗi sản phẩm và lấy ra những sản phẩm có sô lượng lớn hơn 10 và sắp xếp theo a-z.
Em gửi bài tập ạ :
SELECT[ShipCity],COUNT([OrderID]) AS "TONG SO DON HANG"
FROM[dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
select "ShipCity", sum("OrderID") as "TotalOrder"
from "Orders"
group by "ShipCity"
having sum("OrderID") > 16
order by "ShipCity" DESC
:)) count ạ, chưa tập trung nên em viết sai thành sum
-- Giải BT1
SELECT [ShipCity] as "City" , count([OrderID]) as "Số đơn"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING count([OrderID]) >16
ORDER BY count([OrderID]) desc ;
-- Thử thách
-- 1. Liệt kê danh sách quốc gia có số đơn [20 , 50] , sắp xếp tăng dần (Bảng Orders).
-- 2. Liệt kê danh sách Suppliers có tổng lượng hàng tồn lớn hơn 25 ( Bảng Products).
BT1:
SELECT [ShipCity], COUNT(OrderID) AS [CountOrder]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY COUNT([OrderID]) DESC
BT:
SELECT ShipCity, COUNT(OrderID) AS TOTALOrder
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC;
E làm bài tập như vậy mà cứ báo lỗi không rõ sai chỗ nào ạ
SELECT [ShipCity], COUNT([OrderID]) AS [TotalOrders]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) >16
ORDER BY COUNT([OrderID]) DESC
Ví dụ 2 e sửa thành lệnh having như này vẫn được phải k ạ
SELECT MONTH([ShippedDate]) AS [Month], SUM ([Freight]) AS [TotalFreight]
FROM[dbo].[Orders]
GROUP BY MONTH([ShippedDate]),YEAR([ShippedDate])
HAVING MONTH([ShippedDate])>6 AND YEAR([ShippedDate])='1996'
ORDER BY MONTH([ShippedDate]) ASC
SELECT ShipCity, COUNT(OrderID) AS [Số đơn hàng]
FROM dbo.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY [Số đơn hàng] DESC;
cám ơn anh :)
--BT1:Hay loc ra nhung thanh pho co so luong don hang>16 va
--sap xep theo tong so luong giam dan.
SELECT [ShipCity] , COUNT([OrderID]) AS [NumberOfOrders]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC
use NORTHWND
select [ShipCity], count([OrderID]) as "Total Orders"
from [dbo].[Orders]
group by [ShipCity]
having count([OrderID]) > 16
order by count([OrderID]) desc
-- Hãy lọc ra những thành phố có số lượng đơn hàng > 16 và sắp xếp
-- theo tổng số lượng giảm dần
SELECT ShipCity, COUNT(*) AS [TotalOrder]
FROM Orders
GROUP BY ShipCity
HAVING COUNT(*) > 16
ORDER BY COUNT(*) DESC
-- Thử thách
-- Hãy lọc ra những đơn hàng có tổng giá trị lơn hơn 1.000
-- Hãy lọc ra những sản phẩm theo nhà cung cấp có giá trung bình lớn hơn 500
-- Hãy lọc ra những sản phẩm theo nhà cung cấp có giá trung bình lớn hơn 500
SELECT [SupplierID], AVG([UnitPrice]) AS [GIÁ TB]
FROM [dbo].[Products]
GROUP BY [SupplierID]
HAVING AVG([UnitPrice]) > 500
anh hỗ trợ em với, em dùng sql server thông qua docker (cụ thể sài mac) em attach file mdf và ldf không được anh có cách nào giúp em đc ko ạ ?
--BÀI TẬP 1: HÃY LỌC RA NHỮNG THÀNH PHỐ CÓ SỐ LƯỢNG ĐƠN HÀNG > 16 VÀ
--SẮP XẾP THEO TỔNG SỐ LƯỢNG GIẢM DẦN
SELECT [ShipCity], COUNT([OrderID]) AS [COUNT OrderID],
SUM([OrderID]) AS [SUM OrderID]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY SUM([OrderID]) DESC;
--THỬ THÁCH
--1.HÃY LỌC RA NHỮNG SẢN PHẨM CÓ SỐ LƯỢNG LỚN 10 VÀ ĐƠN GIÁ TB GIẢM DẦN
SELECT [ProductID], COUNT([Quantity]) AS [COUNT Quantity],
AVG([UnitPrice]) AS [AVG UnitPrice]
FROM [dbo].[Order Details]
GROUP BY [ProductID]
HAVING COUNT([Quantity]) > 10
ORDER BY AVG([UnitPrice]) DESC;
--2 HÃY CHO BIẾT TỔNG SỐ TIỀN VẬN CHUYỂN CỦA TỪNG THÁNG TRONG NỮA NĂM
--- CỦA NĂM 1996 , XẮP XẾP THEO NGÀY GIẢM DẦN
--TỔNG TIỀN VẬN CHUYỂN < 5000$
SELECT SUM([Freight]) AS [SUM Freight],
MONTH([ShippedDate]) AS [DAY]
FROM [dbo].[Orders]
WHERE [ShippedDate] BETWEEN '1996-07-04' AND '1996-12-30'
GROUP BY MONTH([ShippedDate])
HAVING SUM([Freight]) < 5000
ORDER BY MONTH([ShippedDate]) DESC;
--THỬ THÁCH
--1.HÃY LỌC RA NHỮNG SẢN PHẨM CÓ SỐ LƯỢNG LỚN 10 VÀ ĐƠN GIÁ TB GIẢM DẦN
Select p.ProductID, p.UnitsInStock, AVG(p.UnitPrice) as [AVG]
From [dbo].[Products] as p
Where p.UnitsInStock > 10
Group by p.ProductID, p.UnitsInStock
Order by AVG(p.UnitPrice) DESC;
--2 HÃY CHO BIẾT TỔNG SỐ TIỀN VẬN CHUYỂN CỦA TỪNG THÁNG TRONG NỮA NĂM
--- CỦA NĂM 1996 , XẮP XẾP THEO NGÀY GIẢM DẦN
--TỔNG TIỀN VẬN CHUYỂN < 5000$
Select MONTH(o.ShippedDate) as [MONTH],SUM(o.[Freight]) as [Sumfreigh]
From [dbo].[Orders] as o
Where o.ShippedDate Between '1996-07-01' AND '1996-12-31'
Group by MONTH(o.ShippedDate)
Having SUM(o.[Freight]) < 5000
--bt1:
--lọc ra những tp có sl đơn>16
--và sx theo tổng sl giảm dần
SELECT [ShipCity], COUNT([OrderID])
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS [số lượng đơn hàng] , SUM([OrderID]) AS [tổng số lượng]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY SUM([OrderID]) DESC;
Select shipcity, cout ([orderID])
From ORDERS
Group by shipcity
Having cout([orderID]) >16;
Order by cout([orderID]) DESC;
SELECT ShipCity, Count(OrderID) AS SoLuongDonHang
FROM Orders
GROUP BY ShipCity
HAVING Count(OrderID)>16
ORDER BY SUM(OrderID) DESC
SELECT [SupplierID], SUM([UnitInStock]) AS [TotalUnit], AVG([UnitPrice]) AS [AVGprice]
FROM Products
GROUP BY [SupplierID]
HAVING SUM([UnitInStock])>30 AND AVG([UnitPrice])
SELECT ShipCity, COUNT(OrderID) AS TotalOrders
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID)>16
ORDER BY TotalOrders DESC
VD 3 , giải theo cách sử dụng HAVING sao lại sai được nhỉ bác?
SELECT
MONTH([ShippedDate]) AS "Tháng ship hàng",
SUM[Freight] AS "Tiền vận chuyển"
FROM[dbo].[Orders]
GROUP BY MONTH([ShippedDate])
HAVING MONTH([ShippedDate]) > 6 AND YEAR([ShippedDate]) =1996
ORDER BY MONTH([ShippedDate]) ASC
nay rảnh xem lại, VD3 giải theo HAVING hay hơn, bài trên bị thiếu YEAR
SELECT
YEAR(o.ShippedDate) AS "Năm",
MONTH(o.ShippedDate) AS "Tháng",
SUM(o.Freight) AS "Tổng tiền VC"
FROM Orders o
GROUP BY YEAR(o.ShippedDate),MONTH(o.ShippedDate)
HAVING YEAR(o.ShippedDate) = 1996 AND MONTH(o.ShippedDate) > 6
ORDER BY MONTH(o.ShippedDate)
Anh/chị cho em hỏi ở VD số 2 em code là:
SELECT [SupplierID], [UnitsInStock], [UnitPrice] FROM [dbo].[Products] GROUP BY [SupplierID], [UnitsInStock], [UnitPrice] HAVING SUM ([UnitsInStock]) >30 AND AVG ([UnitPrice]) 31 dòng khác với anh TITV (25 dòng).
Em so thì thấy khác nhau ở chỗ sau SELECT phải thêm lệnh SUM ([UnitsInStock]) và AVG ([UnitPrice]).
Anh/chị nào giải thích dùm em chỗ này với nha, mình đã có đk HAVING phía sau rồi, sau phải có SUM ([UnitsInStock]) và AVG ([UnitPrice]) sau SELECT nữa ah.
đề bài hỏi tổng số lượng và trung bình đơn giá thì phải hiển thị ra chơ, SELECT là để hiển thị ra đó, còn HAVING chỉ là lọc điều kiện sau GROUP BY thoi
Select MONTH(ShippedDate) as "Tháng xuất", SUM(Freight) as "Chi phí vận chuyển"
From Orders
where YEAR([ShippedDate])=1996
group by month(ShippedDate)
having MONTH(ShippedDate)>6
order by MONTH([ShippedDate]) asc
Select [ShipCity], count[OrderID]
From [dbo].[Orders]
Group by [ShipCity]
having count[OrderID] > 16
Order by count[OrderID] Desc
-- LỌC RA NHỮNG THÀNH PHỐ CÓ SỐ LƯỢNG ĐƠN HÀNG > 16, VÀ SẮP XẾP THEO TỔNG SỐ LƯỢNG GIẢM DẦN
SELECT [ShipCountry],
COUNT([OrderID]) AS [TỔNG SỐ LƯỢNG ĐƠN HÀNG]
FROM [dbo].[Orders]
GROUP BY [ShipCountry]
HAVING COUNT([OrderID]) > 16
ORDER BY COUNT([OrderID]) DESC;
SELECT [ShipCity],
COUNT([OrderID]) AS "Total Order"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) > 16
ORDER BY "Total Order" DESC;
Kết quả 13 dòng
select [ShipCity],COUNT([OrderID]) as TotalOrder
From [dbo].[Orders]
Group by [ShipCity]
having COUNT([OrderID]) > 16
Order by COUNT([OrderID]) desc;
Ví dụ 3: Dùng Having được mà thầy, thậm chí cả Where luôn ạ,
SELECT
MONTH (O.ShippedDate) AS "Tháng",
SUM (O.Freight) AS "Tổng tiền",
YEAR (O.ShippedDate) AS "Năm"
FROM [dbo].[Orders] AS O
WHERE YEAR (O.ShippedDate) = 1996 -- Đều đúng
GROUP BY MONTH (O.ShippedDate), YEAR (O.ShippedDate)
HAVING MONTH (O.ShippedDate) >= 6 -- AND YEAR (O.ShippedDate) = 1996
ORDER BY MONTH (O.ShippedDate) ASC
Lọc ra quốc gia có tổng phí ship> 1000
Câu hỏi: Hãy lọc ra những quốc gia có số lượng nhà cung cấp lớn hơn 2.
Giải bt ạ, cảm ơn thầy nhiều ạ!
SELECT [ShipCity], COUNT([OrderID])AS"TotalOrder"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY SUM([OrderID]) DESC;
SELECT ShipCity, COUNT(OrderID)
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC;
-Bài tập 1: Lọc ra những thành phố
-Có số lượng đơn hàng >16
-Sắp xếp theo tổng số lượng giảm dần
SELECT[ShipCity], COUNT([OrderID]) AS "Số lượng đơn hàng >16"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID]) >16
ORDER BY COUNT([OrderID]) DESC
-Bài tập challenge
- Lọc ra những quốc gia có số lượng nhà cung cấp >2
SELECT [Country], COUNT([SupplierID])
FROM [dbo].[Suppliers]
GROUP BY [Country]
HAVING COUNT([SupplierID])>2
ORDER BY COUNT([SupplierID]) ASC
Em cảm ơn anh và mọi người ạ
BT1
SELECT [ShipCity], COUNT([OrderID]) AS [TotalOrder]
FROM [dbo].[Orders]
--WHERE
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
SELECT [ShipCity], SUM([OrderID]) AS [TotalOrders]
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING SUM([OrderID])>16
ORDER BY SUM([OrderID]) DESC;
SELECT *, SUM([Freight]) AS [TotalFreight], MONTH[ShippedDate] AS [Month]
FROM Orders
GROUP BY MONTH[ShippedDate]
HAVING MONTH[ShippedDate]>6 AND SUM([Freight])>1000
ORDER BY MONTH[ShippedDate] ASC;
SELECT ShipCity, COUNT(OrderID) AS "TotalOrders"
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC
SELECT SHIPCITY, COUNT(ORDERIN) AS 'SỐ LƯỢNG ĐƠN HÀNG'
FROM ORDERS
GROUP BY SHIPCITY
HAVING COUNT(ORDERID) > 16
ORDER BY COUNT(ORDERID) DESC
SELECT [ShipCity], COUNT([OrderID])
FROM[dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC
SELECT [ShipCity], COUNT([OrderID]) AS numberorder
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;
SELECT ShipCity,COUNT(OrderID) AS "SL"
FROM DBO.Orders
GROUP BY ShipCity
HAVING COUNT(OrderID)>16
ORDER BY COUNT(OrderID) DESC
Thử thách: Lấy danh sách các nhân viên (EmployeeID, LastName, FirstName) và số lượng đơn hàng mà họ đã xử lý trong năm 1997, nhưng chỉ bao gồm những nhân viên đã xử lý ít nhất 15 đơn hàng trong năm đó.
Select e.EmployeeID, e.LastName, e.FirstName, COUNT(o.OrderID) as SoLuongDonHangXuLy
From Employees as e, Orders as o
Where e.EmployeeID = o.EmployeeID AND YEAR(o.OrderDate) = 1997
Group By e.EmployeeID, e.LastName, e.FirstName
Having COUNT(o.OrderID) >= 15;
Hoặc
Select o.EmployeeID, e.LastName, e.FirstName, COUNT(o.OrderID) as SoLuongDonHangXuLy
From Employees as e, Orders as o
Where e.EmployeeID = o.EmployeeID AND YEAR(o.OrderDate) = 1997
Group By o.EmployeeID, e.LastName, e.FirstName
Having COUNT(o.OrderID) >= 15;
-- lọc ra những thành phố có số lượng đơn hàng >16, TỔNG FREIGHT LỚN HƠN 10
-- và sắp xếp theo tổng số luộng giảm dần
-- và shipname bắt đầu t và vị trí thứ 2 hoặc thứ 3 phải khác k và e VÀ LỌC RA CÁC order trong THÁNG 7 CỦA NĂM 1996
--SELECT * FROM dbo.Orders
SELECT SUM(OrderID) AS [tông đơn hàng], SUM(Freight) AS [tổng freight], MONTH(OrderDate) AS [month], YEAR(OrderDate) AS [year],shipname
FROM dbo.Orders
--GROUP BY Freight,ShipName,OrderID, YEAR(OrderDate), MONTH(OrderDate)
WHERE shipname LIKE 't[^k,e]%' AND (MONTH(OrderDate)=7 AND YEAR(OrderDate)=1996)
-- GROUP BY Freight,ShipName,OrderID, YEAR(OrderDate), MONTH(OrderDate)
-- trong group by chỉ nhóm: shipname,year(orderdate), month(orderdate)
GROUP BY ShipName, YEAR(OrderDate),MONTH(OrderDate)
HAVING SUM(OrderID) >16 AND SUM(Freight)>10
ORDER BY SUM(OrderID) DESC
-- lọc ra những thành phố có số lượng đơn hàng >16,
-- và sắp xếp theo tổng số luộng giảm dần
-- và shipname bắt đầu bằng t và vị trí thứ 2 hoặc thứ 3 phải khác k và e
SELECT * FROM dbo.Orders
SELECT sum (OrderID),ShipCity,shipvia FROM dbo.Orders
WHERE ShipName LIKE 'T[^k,e]%'
GROUP BY ShipCity,ShipVia, OrderID
HAVING SUM (OrderID)>16
ORDER BY SUM(OrderID) DESC
SELECT MONTH(ShippedDate), SUM(Freight) AS [SumFreight]
FROM Orders
WHERE YEAR(OrderDate) = 1996
GROUP BY MONTH(ShippedDate)
HAVING MONTH(ShippedDate)> 6
ORDER BY MONTH(ShippedDate) ASC;
SELECT ShipCity, COUNT(OrderID) AS [TotalOrders]
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) >16
ORDER BY COUNT(OrderID) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS [TONG SO DON]
FROM dbo.Orders
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC
select ShipCity,count(OrderID) as 'so luong don hang'
from Orders
group by ShipCity
having COUNT(OrderID) > 16
order by count(OrderID) desc
SELECT ShipCity, COUNT(OrderID)
FROM Orders
GROUP BY ShipCity
HAVING COUNT(OrderID) > 16
ORDER BY COUNT(OrderID) DESC;
SELECT ShipCity, SUM([OrderID]) AS [SOLUONG]
FROM Orders
GROUP BY ShipCity
HAVING SUM([OrderID])>16
ORDER BY SUM([OrderID]) DESC;
SELECT [ShipCity], COUNT([OrderID]) AS "Tong don hang"
FROM [dbo].[Orders]
GROUP BY [ShipCity]
HAVING COUNT([OrderID])>16
ORDER BY COUNT([OrderID]) DESC;