Khóa Học SQL Server - Bài 29. Bài tập Sub Query - truy vấn con, truy vấn lồng nhau

Поділитися
Вставка
  • Опубліковано 11 гру 2024

КОМЕНТАРІ • 151

  • @tbhp-kc6jx4jg6i
    @tbhp-kc6jx4jg6i 7 місяців тому +3

    Cảm ơn anh vì bài giảng rất hay ạ!
    Đáp án bài tập:
    SELECT o.OrderID, c.CompanyName, c.CustomerID
    FROM [dbo].[Customers] c
    INNER JOIN [dbo].[Orders] o
    ON c.CustomerID = o.CustomerID
    INNER JOIN [dbo].[Order Details] od
    ON od.OrderID = o.OrderID
    GROUP BY o.OrderID, c.CompanyName, c.CustomerID
    HAVING SUM(od.Quantity*od.UnitPrice) = (SELECT TOP 1 SUM(od.Quantity*od.UnitPrice) AS Total
    FROM [dbo].[Order Details] od
    GROUP BY od.OrderID
    ORDER BY Total DESC
    )

  • @lngye1505
    @lngye1505 8 місяців тому +2

    31/03/2024
    Em xin cảm ơn thầy ạ.
    Sau đây là phần bài tập:
    --Lấy thông tin về các khách hàng có tổng giá trị đơn hàng lớn nhất
    select * from Customers;
    select * from [Order Details];
    select * from Orders;
    select c.ContactName, o.OrderID,
    (Select Sum(od.Quantity* od.UnitPrice)
    From "Order Details" od
    Where o.OrderID = od.OrderID) as "Total"
    from
    Orders as o
    inner join
    Customers c on o.CustomerID = c.CustomerID
    Group by
    c.ContactName, o.OrderID
    Order by
    "Total" desc;
    Xin cảm ơn thầy và mọi người đã đọc ạ!
    Mình học và có làm file theo từng bài của thầy luôn.
    Có ghi chép lại và làm lại những phần ghi chép đó thành 1 pp cho lúc cần dễ tra cứu, xem lại.
    Lúc luyện tập có thể mở lại xem cú pháp hay là cách sử dụng câu lệnh.
    Ai có duyên đọc được nếu cần thì cmt mình gửi cho nha.

    • @chinhnguyenminh3086
      @chinhnguyenminh3086 8 місяців тому

      Chào bạn, thật tình cờ khi đọc được cmt này. Nếu không phiền, bạn có thể chia sẻ cho mình những ghi chép của bạn được không? Mình xin cảm ơn bạn rất nhiều. Chúc bạn nhiều thành công trong công việc!
      Em cũng xin cảm ơn thầy vì những bài học bổ ích!

    • @chinhnguyenminh3086
      @chinhnguyenminh3086 8 місяців тому

      Mình xin góp ý 1 chút nhé. Bạn chưa đáp ứng được hết yêu cầu của đề bài ạ:
      1. Bạn chưa đưa ra được khách hàng có tổng giá trị đơn hàng lớn nhất. Bạn mới chỉ sắp xếp theo thứ tự từ cao xuống thấp thôi.
      2. Theo phần code của bạn, bạn mới chỉ tìm được giá trị của đơn hàng theo từng "OrderID". Nhưng theo mình hiểu, đề bài cần lọc ra giá trị đơn hàng theo từng "khách hàng". Mà 1 "khách hàng" có thể có nhiều "Order ID".
      Đó là ý kiến của mình, có gì bạn cứ tranh luận nhé, để cùng nhau học tốt hơn. Cảm ơn vì đã đọc!

    • @charathip223
      @charathip223 8 місяців тому

      mình được ko bạn ?

  • @NguyenTuan-dt8hq
    @NguyenTuan-dt8hq Рік тому +6

    Em gửi bài làm bài cuối, cảm ơn thầy
    SELECT c.*
    FROM Orders as o
    INNER JOIN Customers as c
    ON o.CustomerID=c.CustomerID
    WHERE o.OrderID IN
    (SELECT OrderID
    FROM
    (SELECT OrderID, SUM(UnitPrice*Quantity) AS Order_TotalPrice
    FROM [Order Details]
    GROUP BY OrderID) as temp
    WHERE temp.Order_TotalPrice=
    (SELECT Max(temp.Order_TotalPrice)
    FROM
    (SELECT OrderID, SUM(UnitPrice*Quantity) AS Order_TotalPrice
    FROM [Order Details]
    GROUP BY OrderID)
    as temp));

    • @cuonghuynh6637
      @cuonghuynh6637 Рік тому

      good>

    • @CoffeeTran18
      @CoffeeTran18 8 місяців тому

      Bài bạn này làm đúng nè, nhưng viết SQL nên tường minh thêm tí chẳng hạn chỗ Sub Query thứ 2 bạn nên ghi rõ là SELECT Temp.OrderID
      ^^

    • @TrinhHuỳnhThịTú-b7v
      @TrinhHuỳnhThịTú-b7v 4 місяці тому

      @@CoffeeTran18 bài bạn làm chưa đúng đề bài, đề bài là tìm KH có tổng giá trị đơn hàng lớn nhất chứ ko phải tìm KH sở hữu 1 đơn hàng có value cao nhất.

    • @GniagNeyun
      @GniagNeyun 4 місяці тому

      @@TrinhHuỳnhThịTú-b7v bài này k nói rõ là tổng của 1 đơn hàng hay các đơn hàng vì 1 khách hàng có thể có nhiều đơn hàng nma đọc tổng giá trị đơn hàng thì có thể hiểu được là tổng của 1 đơn hàng tại một thời điểm mà khách hành đặt

  • @tridihoc
    @tridihoc 2 місяці тому

    em cám ơn thầy vì đã bỏ công sức làm những bài giảng ạ
    em xin gửi bài tập
    --bt1: lấy thông tin về các khách hàng có tổng giá trị đơn hàng lớn nhất
    select (od.Quantity*od.UnitPrice) as TotalPrice
    from [Order Details] od
    order by TotalPrice desc
    ; --> kiểm tra giá trị lớn nhất
    select c.*, (od.Quantity*od.UnitPrice) as TotalPrice
    from [Customers] c
    join [Orders] o
    on c.CustomerID = o.CustomerID
    join [Order Details] od
    on od.OrderID = o.OrderID
    where (od.Quantity*od.UnitPrice) =
    (select max(od.Quantity*od.UnitPrice)
    from [Order Details] od)
    ;

  • @tuananhpham2978
    @tuananhpham2978 7 місяців тому +1

    16/04/2024
    Cảm ơn anh, em xin phép đóng góp phần lời giải ở bài tập:
    -- Lấy thông tin về các khách hàng có tổng giá trị đơn hàng lớn nhất
    SELECT c.*
    FROM [dbo].[Customers] c
    FULL JOIN [dbo].[Orders] o
    ON c.CustomerID = o.CustomerID
    Full JOIN [dbo].[Order Details] od
    ON o.OrderID = od.OrderID
    WHERE ([UnitPrice]*[Quantity]) IN (
    SELECT MAX([UnitPrice]*[Quantity]) AS [TotalOrdersDetails]
    FROM [dbo].[Order Details])

  • @thehung.12
    @thehung.12 11 місяців тому +2

    BÀI TẬP:
    select c.*
    from Customers c
    inner join Orders o
    on c.CustomerID = o.CustomerID
    inner join [Order Details] od
    on od.OrderID = o.OrderID
    where (od.Quantity * od.UnitPrice) = (
    select max (od.Quantity * od.UnitPrice)
    from [Order Details] od
    );

  • @_MaiTienDat
    @_MaiTienDat 9 місяців тому

    Em xin cảm ơn thầy về những bài ôn tập như vầy. Mong thầy sẽ ra những bài học chất lượng ạ.
    Em xin gửi đáp án cho câu hỏi cuối video:
    SELECT DISTINCT c.*
    FROM dbo.Customers AS c
    JOIN dbo.Orders AS o
    ON c.CustomerID = o.CustomerID
    WHERE c.CustomerID =
    (SELECT o.CustomerID
    FROM dbo.Orders AS o
    WHERE o.OrderID IN
    (SELECT TOP 1 od.OrderID
    FROM dbo.[Order Details] AS od
    GROUP BY od.OrderID
    ORDER BY SUM(Quantity*UnitPrice) DESC)
    ) ;

    • @CoffeeTran18
      @CoffeeTran18 8 місяців тому

      trường hợp có 2 đơn hàng có giá max bằng nhau thì sao bạn, dùng TOP 1 vẫn chưa đúng đâu

  • @LuckySport2k3
    @LuckySport2k3 2 місяці тому +1

    --Bài 29. Bài tập Sub Query - truy vấn con, truy vấn lồng
    --Lấy thông tin về khách hàng có tổng giá trị 1 đơn hàng lớn nhất
    select *
    from [dbo].[Customers]as c
    join [dbo].[Orders] as o on c.CustomerID=o.CustomerID
    where o.OrderID=(select top 1 od.OrderID
    from[dbo].[Order Details] as od
    group by od.OrderID
    order by sum([UnitPrice]*[Quantity]) desc )
    --Lấy thông tin của khách hàng có tổng giá trị các đơn hàng là lớn nhất
    select *
    from [dbo].[Customers] as c
    where [CustomerID]=(
    select top 1 o.CustomerID
    from [dbo].[Orders] as o ,[dbo].[Order Details] as od
    group by o.CustomerID
    order by sum(od.Quantity*od.UnitPrice) desc )

  • @vitranthithao5855
    @vitranthithao5855 7 місяців тому

    Em cảm ơn ạ, Câu trả lời:
    select top 1 c.[CustomerID],c.[CompanyName]
    from [dbo].[Orders] as o
    inner join [dbo].[Customers] as c
    on o.[CustomerID]=c.[CustomerID]
    inner join [dbo].[Order Details] as od
    on od.[OrderID]=o.[OrderID]
    where [UnitPrice]*[Quantity]=(
    select max([UnitPrice]*[Quantity])
    from [dbo].[Order Details]
    );

  • @haidao2710
    @haidao2710 7 місяців тому +1

    Em cảm ơn anh rất nhiều ạ,
    Đáp án bài tập:
    SELECT C.*,OD.UnitPrice*OD.Quantity AS [SUMOrderID max]
    FROM [dbo].[Order Details] OD
    JOIN [dbo].[Orders] O
    ON O.OrderID = OD.OrderID
    JOIN [dbo].[Customers] C
    ON O.CustomerID = C.CustomerID
    WHERE OD.Quantity*OD.UnitPrice = (
    SELECT MAX( OD.Quantity*OD.UnitPrice) AS [SUMOrderID max]
    FROM[dbo].[Order Details] OD

    );
    -- RUN RA ĐƯỢC 2 KHÁCH HÀNG CÓ TỔNG GIÁ TRỊ ĐƠN HÀNG LỚN NHẤT LÀ 15810
    anh có làm video nào giới thiệu về Execution plan ko ạ

  • @havandung7048
    @havandung7048 Рік тому

    Cám ơn thầy. Em gửi bài tập ạ
    SELECT *
    FROM [dbo].[Customers] c
    WHERE c.CustomerID = (
    SELECT TOP 1 c.CustomerID
    FROM [dbo].[Customers] c, [dbo].[Order Details] od, [dbo].[Orders] o
    WHERE o.CustomerID = c.CustomerID
    GROUP BY c.CustomerID, od.Quantity, od.UnitPrice
    ORDER BY (od.Quantity * od.UnitPrice) DESC
    );

  • @PhamAnhTri
    @PhamAnhTri 22 дні тому

    bài giải cho bài tập trên
    select top 1 c.CustomerID, c.CompanyName, [tổng giá trị đơn hàng]
    from [dbo].[Customers] c
    inner join (
    select o.[OrderID], o.CustomerID, sum(od.[UnitPrice]*od.[Quantity]) as [tổng giá trị đơn hàng]
    from [dbo].[Orders] o
    inner join [dbo].[Order Details] od on o.OrderID = od.OrderID
    group by o.[OrderID], o.CustomerID
    ) as OrderTotals on c.CustomerID = OrderTotals.CustomerID
    order by [tổng giá trị đơn hàng] desc

  • @tradoson6493
    @tradoson6493 Рік тому +2

    --Bai lam cua em (tim duoc 2 record )
    select c.* from Orders o
    join Customers c
    on o.CustomerID = c.CustomerID
    where o.OrderID in (
    select OrderID from [Order Details]
    where (UnitPrice * Quantity) = (select max(UnitPrice*Quantity) from [Order Details]))

  • @Khong_ai_biet_ten
    @Khong_ai_biet_ten 6 місяців тому +1

    em gửi
    select c.CustomerID, c.ContactName, o.OrderID
    from Customers as c
    inner join orders as o
    on c.CustomerID=o.CustomerID
    where o.OrderID=(
    select top 1 orderID
    from [Order Details]
    group by orderID
    order by sum(UnitPrice*Quantity) desc
    )
    tầm này mỗi người nghĩ 1 kiểu để giải bài này, đọc kết quả mà chỉ biết paste vô, giống thì ok sai thì kệ vì lú não

  • @ToanNguyen-gl4lf
    @ToanNguyen-gl4lf 5 місяців тому

    cảm ơn vì đóng góp của thầy ạ!
    câu trả lời:
    select TOP 1 CustomerID, SUM ( [UnitPrice]*[Quantity]) Order_Value
    FROM (SELECT CustomerID,[UnitPrice],[Quantity]
    FROM [dbo].[Order Details] od
    join (
    SELECT [OrderID],
    (
    SELECT CustomerID
    FROM Customers c
    WHERE o.CustomerID=c.CustomerID
    ) CustomerID
    FROM [Orders] o
    ) db
    on od.OrderID=db.[OrderID] ) abc
    Group BY CustomerID
    Order BY Order_Value DESC

  • @rabbittanksuperbestmatch4259
    @rabbittanksuperbestmatch4259 7 місяців тому +1

    Bài tập (Công nhận bài lần này khó thật sự nhưng khó là ở cách viết code cơ)
    SELECT c.*
    FROM Orders AS o
    INNER JOIN Customers AS c
    ON o.CustomerID = c.CustomerID
    WHERE o.OrderID IN (
    SELECT [Total Price Table].OrderID
    FROM (
    SELECT od.OrderID, SUM(UnitPrice * Quantity * 1 - Discount) AS [Total Price]
    FROM [Order Details] AS od
    GROUP BY od.OrderID
    ) AS [Total Price Table]
    WHERE [Total Price Table].[Total Price] = (
    SELECT MAX([Total Price Table].[Total Price]) AS [Max Price]
    FROM (
    SELECT od.OrderID, SUM(UnitPrice * Quantity * 1 - Discount) AS [Total Price]
    FROM [Order Details] AS od
    GROUP BY od.OrderID
    ) AS [Total Price Table]
    )
    )

  • @tuongpham986
    @tuongpham986 7 місяців тому

    Đáp án "Lấy thông tin về các khách hàng có tổng giá trị đơn hàng lớn nhất"
    select c.*
    from Orders as o
    inner join Customers as c
    on c.CustomerID = o.CustomerID
    inner join [Order Details] as od
    on od.OrderID = o.OrderID
    where (od.Quantity*od.UnitPrice) in (
    select MAX(Quantity*UnitPrice) as [Total Order]
    from [Order Details]
    )
    2 rows nhé mọi người

    • @tuongpham986
      @tuongpham986 7 місяців тому

      Double Check xem gía trị đơn hàng lớn nhất :
      select top 3 pp.OrderID,(Quantity*UnitPrice) as [Total Order], c.CompanyName, c.ContactName
      from [Order Details] as pp, Orders as o, Customers as c
      where pp.OrderID = o.OrderID AND c.CustomerID = o.CustomerID
      order by (Quantity*UnitPrice) desc

    • @npm02
      @npm02 3 місяці тому

      Tuyệt vời quá ạ, có người cùng đáp án với mình. Rất ngắn gọn xúc tích ạ

  • @tritinnguyen
    @tritinnguyen 4 місяці тому

    Cảm ơn đóng góp của anh. Em xin gửi đáp án ạ
    select *
    from Customers c
    join Orders o on o.CustomerID = c.CustomerID
    where o.OrderID in(
    select top 1 OrderID
    from [Order Details]
    group by OrderID
    order by sum(UnitPrice * Quantity) desc
    );

  • @thekop5590
    @thekop5590 4 місяці тому

    cảm ơn thầy nhiều ạ

  • @nvminh162
    @nvminh162 4 місяці тому

    Em xin trả lời đáp án bài tập cuối VD là :
    SELECT c.CustomerID, c.CompanyName, UnitPrice*Quantity AS [Money]
    FROM [dbo].[Customers] c
    FULL JOIN [dbo].[Orders] o
    ON c.CustomerID = o.CustomerID
    FULL JOIN [dbo].[Order Details] od
    ON o.OrderID = od.OrderID
    WHERE UnitPrice*Quantity IN (
    SELECT MAX(UnitPrice*Quantity)
    FROM [dbo].[Order Details]
    )

  • @vitranthithao5855
    @vitranthithao5855 7 місяців тому

    Cho em hỏi là làm cách nào để biết là lúc mình thêm truy vấn trước from và khi nào thì sau from ạ.
    Em cảm ơn ạ.

  • @LTBC531
    @LTBC531 7 місяців тому

    Giải bài tập:
    SELECT c.*, ([UnitPrice]*[Quantity]) as [SUM]
    FROM [dbo].[Customers] as c
    INNER JOIN [dbo].[Orders] as o
    ON o.CustomerID= c.CustomerID
    INner join [dbo].[Order Details] as od
    ON od.OrderID = o.OrderID
    where ([UnitPrice]*[Quantity]) = (
    SELECT MAX([UnitPrice]*[Quantity])
    FROM [dbo].[Order Details]
    )

  • @khuogngchieu5142
    @khuogngchieu5142 8 місяців тому

    bài làm
    select *
    from [dbo].[Customers] c
    where c.CustomerID in
    (select top 1 c.CustomerID
    from [dbo].[Order Details] od
    join [dbo].[Orders] o
    on od.OrderID =o.OrderID
    join [dbo].[Customers] c
    on o.CustomerID =c.CustomerID
    group by c.CustomerID
    order by sum(od.[UnitPrice]*od.[Quantity]) desc)

  • @sontran8097
    @sontran8097 Рік тому +1

    Thưa thầy, với câu hỏi : lấy thông tin về các đh và tên các sp thuộc các đơn hàng chưa dc giao, thì em thấy làm như thế này cũng ra kết quả 73 row
    SELECT p.ProductName, *
    FROM Orders o
    INNER JOIN [Order Details] d
    ON d.OrderID=o.OrderID
    INNER JOIN Products p
    ON p.ProductID=d.ProductID
    WHERE o.ShippedDate is null
    Tại vì, khi dùng INNER JOIN, thì các bảng tự động liên kết các thông tin lai với nhau, nên khi dặt điều kiện WHERE thì cứ hỏi thẳng luôn, nên khi thấy Sub Query ở WHERE, em cảm thấy hơi rối, em xin cảm ơn!

  • @vuduydung7075
    @vuduydung7075 11 місяців тому +1

    Biết ơn anh vì những bài học
    SELECT o.OrderID, o.CustomerID, c.ContactName, SUM(od.Quantity * od.UnitPrice) AS 'Total'
    FROM dbo.Orders o
    INNER JOIN dbo.Customers c
    ON o.CustomerID = c.CustomerID
    INNER JOIN dbo.[Order Details] od
    ON o.OrderID = od.OrderID
    GROUP BY o.OrderID, o.CustomerID, c.ContactName
    HAVING SUM(od.Quantity * od.UnitPrice) = (
    SELECT MAX(total_amount) AS max_order_value
    FROM (
    SELECT SUM(od.Quantity * od.UnitPrice) as total_amount
    FROM [Order Details] od
    GROUP BY od.OrderID
    ) AS order_values);

    • @team8_quocthien545
      @team8_quocthien545 8 місяців тому

      mình execute cái này thử nma hình như bạn bỏ sót là 1 customerID sẽ có nhiều orderID. của bản mới chỉ so sánh trên 1 orderID thì hải

  • @anhng8485
    @anhng8485 Рік тому +2

    em xin giải bài tập:
    SELECT *, od.Quantity*od.UnitPrice AS TotalPrice
    FROM Customers c
    INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID
    INNER JOIN [Order Details] od
    ON o.OrderID = od.OrderID
    WHERE od.Quantity*od.UnitPrice =
    (
    SELECT MAX(od.Quantity*od.UnitPrice)
    FROM [Order Details] od
    );

  • @AsdAsd-kj5ee
    @AsdAsd-kj5ee Рік тому

    dạ anh ơi anh có thể làm 1 video những thứ cần học để trở thành back-end và front-end được không ạ 🥰

  • @HuongPhan-kd1fq
    @HuongPhan-kd1fq 6 місяців тому

    PHẦN NÀY PHẢI DÙNG CREATE VIEW NHÉ . VÌ NẾU LẤY TOP 1 sẽ có trường hợp hai người bỏ ra Tổng số tiền tương tự nhau mua hàng . Thì chỉ lấy được duy nhất một người . Kết quả sẽ bị sai vì thiếu mất một người

  • @thoaiuc
    @thoaiuc Рік тому

    Dạ BT4 đề bảo ít hơn là mình lấy nhỏ hơn đúng ko ạ.

  • @mduy211
    @mduy211 Рік тому

    Anh cập nhật kết quả của bài toán với ạ . Em làm xong cũng ko biết đúng hay sai ^^

  • @truongnamanh
    @truongnamanh 9 місяців тому +1

    Dạ em xin phép gửi bài giải:
    SELECT o.OrderID, c.ContactName, SUM (od.UnitPrice*od.Quantity) [Total]
    FROM Customers [c]
    INNER JOIN Orders [o]
    ON o.CustomerID = c.CustomerID
    INNER JOIN [Order Details] [od]
    ON od.OrderID = o.OrderID
    GROUP BY o.OrderID, c.ContactName
    HAVING SUM (od.UnitPrice*od.Quantity) = (
    SELECT MAX([Total MAX])
    FROM (SELECT SUM(od.UnitPrice*od.Quantity) AS [Total MAX]
    FROM [Order Details] od
    GROUP BY od.OrderID
    ) AS [Valune])

  • @DungNguyen-tf6uz
    @DungNguyen-tf6uz Рік тому +2

    -- Lay thong tin va cac khach hang co tong gia tri don hang lon nhat
    SELECT c.*
    FROM [dbo].[Customers] AS c
    WHERE c.CustomerID =
    (SELECT o.CustomerID
    FROM [dbo].[Orders] AS o
    WHERE o.OrderID =
    (SELECT od.[OrderID]
    FROM [dbo].[Order Details] AS od
    GROUP BY od.[OrderID]
    HAVING SUM(od.Quantity*od.UnitPrice) =
    (SELECT MAX(temp.Total)
    FROM
    (SELECT o.OrderID,SUM(od.Quantity*od.UnitPrice) AS [Total]
    FROM [dbo].[Orders] AS o
    INNER JOIN [dbo].[Order Details] AS od
    ON o.OrderID = od.OrderID
    GROUP BY o.OrderID) AS temp)))
    Em còn yếu phần này nên mong thầy cho thêm nhiều ví dụ hơn nữa ạ. Em cảm ơn ạ!

  • @ancuongpham1764
    @ancuongpham1764 Рік тому

    select top 1 C.*,(select sum(UnitPrice*Quantity)
    from [Order Details] as OD
    where OD.OrderID =o.OrderID ) as "total"
    from Orders as O
    join Customers as C
    on O.CustomerID= C.CustomerID
    order by total desc

  • @thehiennguyen7090
    @thehiennguyen7090 Рік тому +3

    Để luyện tập,minh co một bài toán tương tự như sau:
    -- LẤY THÔNG TIN CÁC SẢN PHẨM CÓ DOANH SỐ BÁN HÀNG CAO NHẤT

    • @lngye1505
      @lngye1505 8 місяців тому

      Tôi xin trả lời nếu có gì sai mong anh có thể sửa cho ạ.
      Bài giải:
      select top 1 p.ProductName,
      (select sum(od.Quantity * od.UnitPrice)
      from "Order Details" od
      where od.ProductID = p.ProductID) as "TotalUnitPrice",

      (select count(od.OrderID)
      from "Order Details" od
      where od.ProductID = p.ProductID) as "TotalOrders"
      from
      Products p
      order by "TotalUnitPrice" desc;
      Kết quả: 1 dòng sản phẩm có doanh số cao nhất bao gồm tên sản phẩm, tổng số đơn hàng, tổng giá trị
      ProductName: Côte de Blaye
      TotalOrders: 24
      TotalUnitPrice: 149984,20

  • @hieuvincent791
    @hieuvincent791 Рік тому

    Cám ơn anh :) em gửi bài tập:
    SELECT TOP 1 o.CustomerID, SUM(od.UnitPrice * od.Quantity) AS [Tổng giá trị giao dịch]
    FROM dbo.Orders AS o
    LEFT JOIN dbo.[Order Details] AS od
    ON od.OrderID = o.OrderID
    LEFT JOIN dbo.Customers AS c
    ON c.CustomerID = o.CustomerID
    GROUP BY o.CustomerID
    ORDER BY [Tổng giá trị giao dịch] DESC;

    • @atthanh8163
      @atthanh8163 Рік тому

      Ông có suy nghĩ với cách làm y tôi luôn bất ngờ thật

    • @hieuvincent791
      @hieuvincent791 Рік тому

      @@atthanh8163 welcome ông ;)

  • @duytuancntt10
    @duytuancntt10 9 місяців тому

    Ở ví dụ : Lấy thông tin về các sản phẩm có số lượng tồn kho ít hơn số lượng số lượng tồn kho trung bình của tất cả các sản phẩm:
    Theo em thì số lượng tồn kho = Số lượng trong kho (UnitsInStock) - Số lượng đã đặt (UnitsOnOrder)
    Vậy câu lệnh Query phải là :
    SELECT * ,([UnitsInStock]-[UnitsOnOrder]) AS [Tồn kho]
    FROM [Products]
    WHERE ([UnitsInStock]-[UnitsOnOrder]) < (
    SELECT AVG ([UnitsInStock]-[UnitsOnOrder])
    FROM [Products]
    )
    Như vậy có đúng ko ạ, vì nếu chỉ tính AVG của UnitsInStock thì chỉ tính dc giá trị trung bình của hàng trong kho thôi

  • @zceaa2875
    @zceaa2875 Рік тому

    Hình như trong bảng [dbo].[Order Details] có 1 cột là [Discount]. Khi mấy bạn tính tổng đơn giá thì lấy ([UnitPrice]*[Quantity]) - [Discount] thì mới đúng chứ nhỉ, mình lướt cmt thì thấy đa số mấy bạn không trừ cột này đi khi tính tổng đơn giá

    • @VietNguyen-qx4yc
      @VietNguyen-qx4yc Рік тому

      mk nghĩ phải là - [Discount]*[UnitPrice]*[Quantity] mới đúng !

    • @quangthainguyen9619
      @quangthainguyen9619 11 місяців тому

      tôi nghĩ là nó cũng tùy kiểu discount, nếu discount trừ số tiền nhất định thì trừ discount là xong, còn discount % tiền thì sẽ là như bạn nói @@VietNguyen-qx4yc

  • @kietgia8838
    @kietgia8838 Рік тому

    Bài tập những dạng này thuộc dạng bài nâng cao chưa thầy ?

    • @kietgia8838
      @kietgia8838 Рік тому

      huhu thấy rep em 1 chữ cũng đc :((((

  • @HoangLuonginh-ye9zg
    @HoangLuonginh-ye9zg 9 місяців тому

    em gửi cách làm khác ạ
    select top 1 o.CustomerID, sum(temp.price) as [TotalPrice]
    from Orders o
    join (select sum(od1.Quantity*od1.UnitPrice) as price, od1.OrderID
    from [Order Details] od1
    group by od1.OrderID) as temp
    on temp.OrderID = o.OrderID
    group by o.CustomerID
    order by sum(temp.price) desc

  • @Vanatk17
    @Vanatk17 Рік тому

    cho bài tập bảo cmt mà ko rep chữa thì bảo cmt làm gì vậy ạ ?

    • @TITVvn
      @TITVvn  Рік тому +8

      Để bạn có tinh thần tự học và ghi dấu lại sự vượt qua của chính bản thân bạn. Bạn ko trả lương hoặc đóng học phí cho mình nên đừng quá hy vọng vào sự phục vụ của mình dành cho bạn.

  • @minhanhhoang8634
    @minhanhhoang8634 5 місяців тому

    huhu anh ơi anh chữa bài này đi ạ :(((

    • @minhanhhoang8634
      @minhanhhoang8634 5 місяців тому

      Không biết lồng ghép các câu lệnh như thế nào cho ngắn gọn và chuyên nghiệp, nhưng mình tự mày mò cũng ra được kết quả. Bạn nào bị chậm hiểu như mình thì có thể tiếp cận như mình nhé!
      Bước 1: Tìm ra OrderID có giá trị đơn hàng lớn nhất
      SELECT TOP 1 [OrderID]
      FROM [dbo].[Order Details] od
      ORDER BY od.UnitPrice*od.Quantity DESC
      => Lúc này bạn sẽ thấy Order có ID là 10865 có giá trị đơn hàng lớn nhất
      Bước 2: Kiểm tra xem Order có giá trị lớn nhất là bao nhiêu
      SELECT MAX(od.UnitPrice*od.Quantity) AS Donhanggiatrilonnhat
      FROM [dbo].[Order Details] od
      => Lúc này bạn sẽ thấy Order có giá trị lớn nhất = 15810
      Bước 3: Kiểm tra lại xem có đúng OrderID 10865 có giá trị bằng 15810 hay không
      SELECT*
      FROM[dbo].[Order Details]
      WHERE[OrderID]='10865'
      => Lúc này bạn lấy Unit Price * Quantity thì ra đúng 10865
      => OrderID 10865 là order có giá trị lớn nhất
      Bước 4: Tìm xem chủ nhân (CustomerID) của Order10865 kia là ai
      SELECT [CustomerID]
      FROM[dbo].[Orders]
      WHERE[OrderID]='10865'
      => Tìm ra được CustomerID của Order kia là 'QUICK'
      Bước 5: Tìm ra được CustomerID rồi thì view all thông tin của Customer đó thui là xong
      SELECT*
      FROM[dbo].[Customers]
      WHERE [CustomerID]='QUICK'
      Không ngờ học chuyên Văn xong giờ chuyển qua ngành IT, thấy cái logic của mình kém ghê cơ. Có gì mọi ng góp ý cho mình vs nha!

    • @minhanhhoang8634
      @minhanhhoang8634 5 місяців тому

      Ui cuối cùng cũng tìm ra được đáp án rồi. Cách làm của mình rất chậm nhưng vẫn ra được kết quả, mỗi tội là không biết lồng ghép các câu vào với nhau như thế nào. Các bạn tham khảo và góp ý nha! Khổ quá, chuyên Văn logic kém bayh lại chuyển sang IT đúng đau đau cái đầu :))))
      Bước 1: Tìm xem giá trị lớn nhất trong số các order là bao nhiêu
      SELECT MAX(od.UnitPrice*od.Quantity) AS Giatrilonnhat
      FROM [dbo].[Order Details] od
      => Lúc này bạn sẽ thấy order có giá trị lớn nhất sẽ bằng 15810.
      Tuy nhiên bạn vẫn chưa biết giá trị lớn nhất đó thuộc về OrderID nào, nên cùng đến bước 2 nhé.
      Bước 2: Tìm xem OrderID nào có giá trị lớn nhất (cụ thể là bằng 15810)
      SELECT TOP 1 [OrderID]
      FROM [dbo].[Order Details] od
      ORDER BY od.UnitPrice*od.Quantity DESC
      => Lúc này tìm ra OrderID 10865 có giá trị lớn nhất
      Bước 3: Double check xem OrderID 10865 có đúng là có giá trị lớn nhất (15810) hay không
      SELECT*
      FROM[dbo].[Order Details]
      WHERE[OrderID]='10865'
      => Lúc này, bạn lấy UnitPrice nhân với Quantity và ra đúng là 15810.
      Bước tiếp theo là tìm xem CustomerID nào là chủ nhân của Order kia
      Bước 4:
      SELECT [CustomerID]
      FROM[dbo].[Orders]
      WHERE[OrderID]='10865'
      => Tìm ra CustomerID là 'QUICK'
      Bước 5: Biết CustomerID rồi thì SELECT ALL để xem thông tin đầy đủ của customer đó
      SELECT*
      FROM[dbo].[Customers]
      WHERE [CustomerID]='QUICK'
      Lâu la vãi chưởng nhưng mà xong rùi nhé! Sang bài 30 thôi.

  • @TrungLe-ty1nd
    @TrungLe-ty1nd Рік тому

    Cám ơn thầy. Em gửi bài tập ạ. Mng góp ý giúp mình nếu có sai sót nhe ^_^
    SELECT TOP 1 C.*
    FROM Customers AS C
    JOIN Orders AS O
    ON C.CustomerID = O.CustomerID
    JOIN [Order Details] AS OD
    ON OD.OrderID = O.OrderID
    WHERE O.OrderID = (
    SELECT TOP 1
    OD.OrderID
    FROM [Order Details] AS OD
    GROUP BY OD.OrderID
    ORDER BY SUM(OD.UnitPrice * OD.Quantity) DESC
    )

    • @tprunuspersicav8839
      @tprunuspersicav8839 11 місяців тому +1

      bài này nhóm theo đơn hàng để tìm ra tổng hóa đơn và sau đó phải nhóm theo khách hàng nữa vì khách hàng họ ko phải mua 1 hóa đơn đâu

  • @OrangeD187
    @OrangeD187 6 місяців тому

    select distinct C.*
    from Customers as C
    inner join
    Orders as O on O.CustomerID = C.CustomerID
    inner join
    [Order Details] as OD on OD.OrderID = O.OrderID
    where O.OrderID =
    (select top 1 OrderID
    from [Order Details]
    group by OrderID
    Order by SUM(UnitPrice * Quantity ) DESC)

  • @nhuttranthien3478
    @nhuttranthien3478 Рік тому

    BT mình chỉ làm được như vậy không biết đúng không
    select OrderID,CustomerID,TotalOrder from
    (select o.OrderID,o.CustomerID,(od.UnitPrice*od.Quantity) as TotalOrder
    from [dbo].[Order Details] od
    inner join [dbo].[Orders] o
    on od.OrderID = o.OrderID) as T
    where TotalOrder =
    ( select max(UnitPrice*Quantity) from [Order Details]);

  • @hoanganhvu196
    @hoanganhvu196 Рік тому

    -- Câu cuối lấy thông tin về các khách hàng có tổng giá trị đơn hàng lớn nhất
    Giải:
    SELECT *
    FROM Customers C
    INNER JOIN Orders O
    ON C.CustomerID = O.CustomerID
    INNER JOIN [Order Details] OD
    ON OD.OrderID = O.OrderID
    WHERE (Quantity*UnitPrice) IN (
    SELECT MAX(Quantity*UnitPrice)
    FROM [Order Details]
    );
    -- Hợp 3 bảng chứa thông tin lại, đề lấy thông tin khách hàng nên SELECT * để lấy hết
    -- Tính giá trị từng đơn đặt hàng (Quantity*UnitPrice) rồi so sánh với giá trị max của từng đơn đặt hàng đó
    ==> Kết quả 2 rows giá trị lớn nhất bằng nhau đúng chứ ạ

  • @minhchiu9334
    @minhchiu9334 9 місяців тому

    Em gửi bài tập.
    SELECT c.*
    FROM Orders o
    JOIN Customers c ON o.CustomerID = c.CustomerID
    WHERE OrderID IN (
    SELECT OrderID
    FROM [Order Details]
    GROUP BY OrderID
    HAVING SUM(UnitPrice * Quantity) = (
    SELECT MAX(TotalPrice)
    FROM (
    SELECT OrderID, SUM(UnitPrice * Quantity) as TotalPrice
    FROM [Order Details]
    GROUP BY OrderID
    ) as Temp )
    )

  • @hongquang453
    @hongquang453 25 днів тому

    Bài tập tự giải:
    ---Đã đọc bài các bạn ở dưới, nhưng không thấy bạn nào giải theo cách này, CÁC BẠN TOÀN BỎ QUA PHẦN DISCOUNT CỦA ĐƠN HÀNG, VẬY LÀ HỎNG RỒI!!
    select distinct c.*
    from Customers as c
    inner join Orders as o
    on c.CustomerID = o.CustomerID
    inner join "Order Details" as od
    on o.orderID = od.orderID
    where o.orderID in (select top 1 od.OrderID from "Order Details" as od group by od.OrderID order by sum(round(od.UnitPrice*od.Quantity*(1-od.Discount),0)) desc)

  • @longtran8099
    @longtran8099 Рік тому

    select c.*,(
    select max([UnitPrice]*[Quantity])
    from [dbo].[Order Details]
    ) as [tổng giá trị đơn hàng]
    from [dbo].[Customers] c
    where c.CustomerID in(
    select o.[CustomerID]
    from [dbo].[Orders] o
    inner join [dbo].[Order Details] od
    on o.OrderID = od.OrderID
    where od.UnitPrice*od.Quantity = (
    select max([UnitPrice]*[Quantity])
    from [dbo].[Order Details] )
    );

  • @binhbui6442
    @binhbui6442 Рік тому

    Bai 6:
    SELECT c.*, temp2.TotalCashPerCustomer
    FROM Customers AS c
    INNER JOIN
    (SELECT TOP 1 temp.CustomerID, SUM(temp.OrderCash) AS TotalCashPerCustomer
    FROM
    (SELECT o.OrderID, o.CustomerID, SUM(od.UnitPrice*od.Quantity) AS OrderCash
    FROM Orders AS o
    INNER JOIN [Order Details] AS od
    ON o.OrderID=od.OrderID
    GROUP BY o.OrderID, o.CustomerID) AS temp
    GROUP BY temp.CustomerID
    ORDER BY SUM(temp.OrderCash) DESC) AS temp2
    ON c.CustomerID=temp2.CustomerID

  • @cuonghuynh6637
    @cuonghuynh6637 Рік тому

    Em gửi lại ạ bài trước e sai
    SELECT C.ContactName, O.OrderID
    FROM Orders O, Customers C
    WHERE O.CustomerID = C.CustomerID AND
    O.OrderID IN (
    SELECT OrderID
    FROM(
    SELECT OD.OrderID, SUM(OD.UnitPrice * OD.Quantity) AS "Tổng giá trị"
    FROM [Order Details] OD, Orders O
    WHERE OD.OrderID = O.OrderID
    GROUP BY OD.OrderID
    ) AS TMP
    WHERE TMP.[Tổng giá trị] =(
    SELECT TOP 1 SUM(OD.UnitPrice * OD.Quantity)
    FROM [Order Details] OD, Orders O
    WHERE OD.OrderID = O.OrderID
    GROUP BY OD.OrderID
    ORDER BY SUM(OD.UnitPrice * OD.Quantity) DESC
    )
    )

  • @HoangLuonginh-ye9zg
    @HoangLuonginh-ye9zg 9 місяців тому +1

    hình như không cần subquery vẫn tìm ra được
    select top 1 sum(od.UnitPrice*od.Quantity) as [totalpriceofcustomer], o.CustomerID
    from Orders o, [Order Details] od
    where o.OrderID = od.OrderID
    group by o.CustomerID
    order by [totalpriceofcustomer] desc;

    • @nguyennhuquynh1953
      @nguyennhuquynh1953 9 місяців тому

      Nhưng mà làm theo cách này chỉ ra đc 1 khách hàng thôi ấy. Mình làm theo sub-query thì trả về 2 thông tin khách hàng họ có giá trị đơn hàng đều là lớn nhất á

    • @HoangLuonginh-ye9zg
      @HoangLuonginh-ye9zg 5 місяців тому +1

      @@nguyennhuquynh1953 Đề bài hỏi là tìm thông tin khách hàng có tổng giá trị đơn hàng lớn nhất chứ không phải là 1 đơn hàng.
      -Nếu tìm thông tin khách hàng có đơn hàng đơn hàng giá trị lớn nhất thì group by theo orderid.
      -Còn nếu tìm khách hàng có tổng giá trị đơn hàng lớn nhất thì bạn còn phải sum lại giá trị của tất cả đơn hàng mà họ đã mua sau đó tìm ra giá trị lớn nhất. Nên cái này phải group by theo customerid
      Lâu rồi mình mới coi lại hên quá vẫn còn nhớ, giờ xem lại thấy hồi xưa mình viết như vậy cùi quá không lấy được tất cả thông tin, dùng sub query được một cái hay là mình có thể dùng select * để lấy được toàn bộ thông tin . Cám ơn bạn đã góp ý kiến cho mình nhe. Chúc bạn học tốt

    • @HoangLuonginh-ye9zg
      @HoangLuonginh-ye9zg 5 місяців тому

      @@nguyennhuquynh1953
      select c.*, temp.total
      from Customers c join (
      select top 1 o.CustomerID ,sum(od.Quantity*od.UnitPrice) as total
      from [Order Details] od join Orders o
      on o.OrderID = od.OrderID
      group by o.CustomerID
      order by sum(od.Quantity*od.UnitPrice) desc
      )as temp
      on c.CustomerID = temp.CustomerID

    • @HoangLuonginh-ye9zg
      @HoangLuonginh-ye9zg 5 місяців тому

      @@nguyennhuquynh1953
      select c.*
      from Customers c
      where c.CustomerID in (
      select top 1 o.CustomerID
      from [Order Details] od join Orders o
      on o.OrderID = od.OrderID
      group by o.CustomerID
      order by sum(od.Quantity*od.UnitPrice) desc
      )

  • @nguyenxuanbach2672
    @nguyenxuanbach2672 3 місяці тому

    16/08/2024: 9:54 Fri
    SELECT c.CustomerID, c.ContactName
    FROM [dbo].[Customers] c
    INNER JOIN [dbo].[Orders] o
    ON o.CustomerID = c.CustomerID
    INNER JOIN [dbo].[Order Details] od
    ON od.OrderID = o.OrderID
    WHERE (od.Quantity * od.UnitPrice) = (
    SELECT MAX(od.Quantity * od.UnitPrice)
    FROM [dbo].[Order Details] od
    )
    2 rows

  • @thachnguyen8539
    @thachnguyen8539 Рік тому

    Mong anh có mấy bài giải hoặc là anh có thể để lại KẾT QUẢ IN RA BAO NHIÊU DÒNG Ạ
    SELECT o.CustomerID,o.OrderID,o.ShipAddress, od.Quantity, od.UnitPrice, od.ProductID
    FROM dbo.Customers c
    LEFT JOIN dbo.Orders o
    ON o.CustomerID = c.CustomerID
    LEFT JOIN dbo.[Order Details] od
    ON o.OrderID = od.OrderID
    WHERE od.Quantity* od.UnitPrice = (
    SELECT MAX (od.Quantity*od.UnitPrice)
    FROM dbo.[Order Details] od
    )

  • @Bang-zd1sw
    @Bang-zd1sw 9 місяців тому

    BT:
    SELECT c.* ,(od.UnitPrice*od.Quantity) AS TotalPrice
    FROM [dbo].[Customers] AS c
    INNER JOIN [dbo].[Orders] AS o
    ON c.CustomerID = o.CustomerID
    INNER JOIN [dbo].[Order Details] od
    ON o.OrderID = od.OrderID
    WHERE (od.UnitPrice*od.Quantity) = (
    SELECT MAX(od.UnitPrice*od.Quantity)
    FROM [dbo].[Order Details] AS od
    )

  • @HuyLeHong-yi7ds
    @HuyLeHong-yi7ds 8 місяців тому

    select c.ContactName
    from Orders as o
    inner join Customers as c
    on o.CustomerID = c.CustomerID
    inner join [Order Details] as od
    on o.OrderID =od.OrderID
    group by c.ContactName
    having sum(UnitPrice*Quantity) = (select top 1 sum(UnitPrice*Quantity)
    from [Order Details] as od
    inner join Orders as o
    on od.OrderID = o.OrderID
    group by o.CustomerID
    order by sum(UnitPrice*Quantity) desc)
    Result: Horst Kloss

  • @LaiThe-l7h
    @LaiThe-l7h Рік тому

    BT:
    SELECT C.ContactName, OD.UnitPrice*OD.Quantity AS "Tổng giá trị đơn hàng"
    FROM Orders AS O
    INNER JOIN Customers AS C
    ON O.CustomerID = C.CustomerID
    INNER JOIN [Order Details] AS OD
    ON OD.OrderID = O.OrderID
    WHERE OD.UnitPrice*OD.Quantity = (
    SELECT MAX(OD.UnitPrice*OD.Quantity)
    FROM [Order Details] AS OD
    );

  • @nguyenhaithanh1982
    @nguyenhaithanh1982 6 місяців тому

    SELECT C.*, OD.[UnitPrice]*OD.[Quantity] AS [TotalOrderValue]
    FROM [dbo].[Customers] AS C
    INNER JOIN [dbo].[Orders] AS O
    ON C.[CustomerID]=O.[CustomerID]
    INNER JOIN [dbo].[Order Details] AS OD
    ON O.[OrderID]=OD.[OrderID]
    WHERE OD.[UnitPrice]*OD.[Quantity] = (
    SELECT MAX([UnitPrice]*[Quantity])
    FROM [dbo].[Order Details] AS OD
    )

  • @kjsaljl
    @kjsaljl Рік тому

    select od.Quantity*od.UnitPrice as total, c.*
    from [dbo].[Order Details] as od
    join [dbo].[Orders] as o
    on o.OrderID = od.OrderID
    join [dbo].[Customers] as c
    on c.CustomerID = o.CustomerID
    where od.Quantity*od.UnitPrice in (
    select max(od.Quantity*od.UnitPrice)
    from [dbo].[Order Details] as od)

    • @vannguyenquang8924
      @vannguyenquang8924 Рік тому

      MAX(od.UnitPrice * od.Quantity) bạn có thể giải thích giúp mình chổ code này là gì được không ạ?

    • @kjsaljl
      @kjsaljl Рік тому

      đề là lấy gia đơn hàng có giá trị cao nhất á bạn. thì mình subquery ở where để tìm ra địa chỗ có có đơn hàng có giá trị max thui. bạn cứ cắt câu subquey ở trong ra chạy riêng là sẽ hiểu

    • @vannguyenquang8924
      @vannguyenquang8924 Рік тому

      @@kjsaljl Mình cứ tưởng là dùng SUM(od.UnitPrice * od.Quantity) chứ, vậy SUM với MAX khi gán vào đây thì có nghĩ gì bạn giải thích giúp mình được không ạ

    • @kjsaljl
      @kjsaljl Рік тому

      Sum là tính tổng á bạn. VD nhé: 1 col có 1 2 3 4 5. thì Sum của nó sẽ là 15. còn max sẽ là 5. kiếm đơn hàng lớn nhất thì là max

  • @minhbaohac5589
    @minhbaohac5589 Рік тому

    select distinct c.*
    from Customers as c
    join orders as o
    on o.CustomerID = c.CustomerID
    join [Order Details] as od
    on o.OrderID = od.OrderID
    where od.OrderID=(
    select top 1 od.OrderID
    from [Order Details] as od
    group by od.OrderID
    order by Sum(od.[Quantity]*od.[UnitPrice]) desc
    )

  • @KhaiTinh-tb4rs
    @KhaiTinh-tb4rs 4 місяці тому

    Em gui loi giai bai tap
    --Lay thong tin ve cac khach hang co tong gia tri don hang lon nhat
    SELECT DISTINCT *
    FROM Customers c
    JOIN Orders o
    ON c.CustomerID = o.CustomerID
    JOIN [Order Details] od
    ON od.OrderID = o.OrderID
    WHERE o.OrderID IN(
    SELECT TOP 1 od.OrderID
    FROM [Order Details] od
    GROUP BY od.OrderID
    ORDER BY SUM(od.UnitPrice*od.Quantity) DESC
    );

  • @giapnguyen4109
    @giapnguyen4109 5 місяців тому

    Select *
    From Customers as c
    inner join Orders as o
    on c.CustomerID = o.CustomerID
    inner join [Order Details] as od
    on o.OrderID = od.OrderID
    Where (od.Quantity * od.UnitPrice) = (
    Select Max(od.UnitPrice * od.Quantity) as[Invoice]
    From [Order Details] as od

    )

  • @haovinh4919
    @haovinh4919 Рік тому

    SELECT c.*
    FROM [dbo].[Orders] o
    JOIN [dbo].[Customers] c
    ON c.CustomerID= o.CustomerID
    WHERE o.OrderID IN (
    SELECT [OrderID]
    FROM [dbo].[Order Details]
    WHERE [UnitPrice]*[Quantity]= (
    select MAX([UnitPrice]*[Quantity]) AS "Giá đơn"
    from [dbo].[Order Details]
    )
    ) ;

  • @t04n26
    @t04n26 Рік тому

    SELECT c.*
    FROM [Customers] as c
    INNER JOIN [Orders] as o ON c.CustomerID = O.CustomerID
    INNER JOIN [Order Details] as od ON od.OrderID = o.OrderID
    WHERE od.Quantity * od.UnitPrice = (
    SELECT MAX(od.[UnitPrice] * od.[Quantity] ) AS GIATRIDONHANG
    FROM [Order Details] as od
    )
    so fk hard maybe i'm not smart enough

  • @phuonghongngo4285
    @phuonghongngo4285 4 місяці тому

    Em gửi đáp án ạ
    SELECT o.OrderID, c.ContactName, SUM (od.UnitPrice * od.Quantity) Total
    FROM Customers c
    INNER JOIN Orders o ON o.CustomerID = c.CustomerID
    INNER JOIN [Order Details] od ON od.OrderID = o.OrderID
    GROUP BY o.OrderID, c.ContactName
    HAVING SUM (od.UnitPrice * od.Quantity) = (
    SELECT MAX([Total MAX])
    FROM (SELECT SUM(od.UnitPrice*od.Quantity) AS [Total MAX]
    FROM [Order Details] od
    GROUP BY od.OrderID
    ) AS Groups);

  • @phucnguyennguyen-yq4hn
    @phucnguyennguyen-yq4hn Рік тому

    Em gửi anh câu trả lời
    SELECT TOP 1 C.CustomerID,C.ContactName, P.ProductName, SUM (P.UnitPrice*OD.Quantity) AS "Total"
    FROM DBO.[Order Details] OD
    INNER JOIN DBO.Products P
    ON P.ProductID = OD.ProductID
    INNER JOIN DBO.Orders O
    ON O.OrderID = OD.OrderID
    INNER JOIN DBO.Customers C
    ON C.CustomerID = O.CustomerID
    GROUP BY C.CustomerID,C.ContactName, P.ProductName
    ORDER BY Total DESC

    • @vannguyenquang8924
      @vannguyenquang8924 Рік тому

      MAX(od.UnitPrice * od.Quantity) bạn có thể giải thích giúp mình chổ code này là gì được không ạ?

  • @HoangCongTaiThe-fq6dy
    @HoangCongTaiThe-fq6dy 3 місяці тому

    select x.*,t.price
    from [dbo].[Customers] as x
    inner join (
    select top 1 c.CustomerID,sum(od.[UnitPrice]*od.[Quantity]) as price
    from [dbo].[Customers] as c
    inner join [dbo].[Orders] as o
    on o.CustomerID=c.CustomerID
    inner join [dbo].[Order Details] as od
    on o.OrderID=od.OrderID
    group by c.CustomerID
    order by price desc) as t on t.CustomerID=x.CustomerID

  • @nhutcodeguide
    @nhutcodeguide 6 місяців тому

    em gửi đáp án ạ: SELECT c.CustomerID, c.ContactName, SUM(od.Quantity * od.UnitPrice * (1-od.Discount)) as Total
    FROM Orders o JOIN [Order Details] od ON o.OrderID = od.OrderID
    JOIN Customers c ON c.CustomerID = o.CustomerID
    GROUP BY c.CustomerID, c.ContactName
    HAVING SUM(od.Quantity * od.UnitPrice * (1-od.Discount)) >= ALL
    (SELECT SUM(od.Quantity * od.UnitPrice * (1-od.Discount)) as Total
    FROM Orders o JOIN [Order Details] od ON o.OrderID = od.OrderID
    JOIN Customers c ON c.CustomerID = o.CustomerID
    GROUP BY c.CustomerID, c.ContactName)

  • @hieulc1704
    @hieulc1704 Рік тому

    SELECT c.*
    FROM dbo.Customers AS c
    WHERE c.CustomerID IN
    ( SELECT CustomerID
    FROM dbo.Orders
    WHERE OrderID IN
    ( SELECT OrderID FROM dbo.[Order Details]
    WHERE (UnitPrice*Quantity) = (SELECT MAX(UnitPrice*Quantity)
    FROM dbo.[Order Details]) ) );

  • @readyforwar2557
    @readyforwar2557 10 місяців тому

    🗣🗣
    SELECT *
    FROM Customers c
    WHERE c.CustomerID IN (
    SELECT o.CustomerID
    FROM Orders o
    INNER JOIN [Order Details] od
    ON o.OrderID = od.OrderID
    GROUP BY o.OrderID, o.CustomerID
    HAVING SUM(od.UnitPrice * od.Quantity) = (SELECT TOP 1 SUM(od.UnitPrice * od.Quantity)
    FROM [Order Details] od
    GROUP BY od.OrderID
    ORDER BY SUM(od.UnitPrice * od.Quantity) DESC)
    )

  • @thanhkhoi5714
    @thanhkhoi5714 10 місяців тому

    SELECT TOP 1 c.*
    FROM Customers c
    INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID
    WHERE o.OrderID = (
    SELECT TOP 1 OrderID
    FROM [Order Details]
    GROUP BY OrderID
    ORDER BY SUM(Quantity * UnitPrice) DESC
    );

  • @thanggg4946
    @thanggg4946 9 місяців тому

    SELECT TOP 10 od.OrderID,C.*
    FROM [dbo].[Order Details] OD
    INNER JOIN [dbo].[Orders] O
    ON OD.OrderID = O.OrderID
    INNER JOIN [dbo].[Customers] C
    ON C.CustomerID =O.CustomerID
    WHERE OD.Quantity*OD.UnitPrice-OD.Discount IN
    (SELECT TOP 10 ( Quantity*UnitPrice-Discount) AS TOTAL
    FROM [dbo].[Order Details]
    ORDER BY TOTAL DESC
    )
    ORDER BY OD.Quantity*OD.UnitPrice-OD.Discount DESC;

  • @sunlee1207
    @sunlee1207 Рік тому

    SELECT C.CustomerID,C.CompanyName,C.ContactName,O.OrderID
    FROM [dbo].[Customers] AS C
    INNER JOIN [dbo].[Orders] AS O
    ON O.CustomerID = C.CustomerID
    WHERE [OrderID] IN (
    SELECT TOP 1 OrderID
    FROM [dbo].[Order Details]
    GROUP BY OrderID
    ORDER BY SUM([UnitPrice]*[Quantity]) DESC);