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

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ต.ค. 2024
  • Link khóa học SQL Server: titv.vn/course...
    Link tải code: github.com/len...
    Clip hướng dẫn chuẩn bị CSDL để thực hành: • Khóa Học SQL Server - ...

ความคิดเห็น • 146

  • @lngye1505
    @lngye1505 6 หลายเดือนก่อน +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 6 หลายเดือนก่อน

      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 6 หลายเดือนก่อน

      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 6 หลายเดือนก่อน

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

  • @TriNguyenLeMinh-q6o
    @TriNguyenLeMinh-q6o 17 วันที่ผ่านมา

    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)
    ;

  • @tbhp-kc6jx4jg6i
    @tbhp-kc6jx4jg6i 5 หลายเดือนก่อน +2

    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
    )

  • @NguyenTuan-dt8hq
    @NguyenTuan-dt8hq ปีที่แล้ว +5

    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>

    • @AlanTran18
      @AlanTran18 6 หลายเดือนก่อน

      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 2 หลายเดือนก่อน

      @@AlanTran18 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 2 หลายเดือนก่อน

      @@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

  • @tuananhpham2978
    @tuananhpham2978 6 หลายเดือนก่อน +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])

  • @_MaiTienDat
    @_MaiTienDat 7 หลายเดือนก่อน

    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)
    ) ;

    • @AlanTran18
      @AlanTran18 6 หลายเดือนก่อน

      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

  • @tritinnguyen
    @tritinnguyen 2 หลายเดือนก่อน

    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
    );

  • @vitranthithao5855
    @vitranthithao5855 5 หลายเดือนก่อน

    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 5 หลายเดือนก่อน

    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 10 หลายเดือนก่อน

    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
    );

  • @Khong_ai_biet_ten
    @Khong_ai_biet_ten 4 หลายเดือนก่อน +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

  • @LuckySport2k3
    @LuckySport2k3 9 วันที่ผ่านมา

    --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 )

  • @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!

  • @ToanNguyen-gl4lf
    @ToanNguyen-gl4lf 3 หลายเดือนก่อน

    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

  • @thehung04
    @thehung04 9 หลายเดือนก่อน +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
    );

  • @rabbittanksuperbestmatch4259
    @rabbittanksuperbestmatch4259 5 หลายเดือนก่อน +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]
    )
    )

  • @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]))

  • @thekop5590
    @thekop5590 2 หลายเดือนก่อน

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

  • @vitranthithao5855
    @vitranthithao5855 5 หลายเดือนก่อน

    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 ạ.

  • @nvminh162
    @nvminh162 2 หลายเดือนก่อน

    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]
    )

  • @duytuancntt10
    @duytuancntt10 7 หลายเดือนก่อน

    Ở 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

  • @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 ạ 🥰

  • @vuduydung7075
    @vuduydung7075 9 หลายเดือนก่อน +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 6 หลายเดือนก่อน

      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

  • @truongnamanh
    @truongnamanh 7 หลายเดือนก่อน +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])

  • @tuongpham986
    @tuongpham986 5 หลายเดือนก่อน

    Đá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 5 หลายเดือนก่อน

      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 หลายเดือนก่อน

      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 ạ

  • @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 ^^

  • @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 :((((

  • @LTBC531
    @LTBC531 5 หลายเดือนก่อน

    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]
    )

  • @thoaiuc
    @thoaiuc 11 หลายเดือนก่อน

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

  • @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
    );

  • @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 6 หลายเดือนก่อน

      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

  • @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 10 หลายเดือนก่อน

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

    • @quangthainguyen9619
      @quangthainguyen9619 9 หลายเดือนก่อน

      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

  • @HuongPhan-kd1fq
    @HuongPhan-kd1fq 4 หลายเดือนก่อน

    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

  • @khuogngchieu5142
    @khuogngchieu5142 6 หลายเดือนก่อน

    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)

  • @HoangLuonginh-ye9zg
    @HoangLuonginh-ye9zg 7 หลายเดือนก่อน

    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

  • @hieuvincent791
    @hieuvincent791 11 หลายเดือนก่อน

    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 10 หลายเดือนก่อน

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

    • @hieuvincent791
      @hieuvincent791 10 หลายเดือนก่อน

      @@atthanh8163 welcome ông ;)

  • @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 ạ!

  • @Vanatk17
    @Vanatk17 11 หลายเดือนก่อน

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

    • @TITVvn
      @TITVvn  11 หลายเดือนก่อน +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.

  • @TrungLe-ty1nd
    @TrungLe-ty1nd 11 หลายเดือนก่อน

    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 9 หลายเดือนก่อน +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

  • @vitaminGi370
    @vitaminGi370 หลายเดือนก่อน

    Đáp án bài tập:
    select c.CustomerID, c.ContactName
    from Customers c
    where c.CustomerID in (
    select top 1 c.CustomerID
    from [Order Details] od
    inner join Orders o
    on o.OrderID = od.OrderID
    inner join Customers c
    on c.CustomerID = o.CustomerID
    group by c.CustomerID
    order by sum(Quantity * UnitPrice) 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ứ ạ

  • @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

  • @OrangeD187
    @OrangeD187 4 หลายเดือนก่อน

    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)

  • @minhchiu9334
    @minhchiu9334 7 หลายเดือนก่อน

    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 )
    )

  • @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
    )
    )

  • @minhanhhoang8634
    @minhanhhoang8634 3 หลายเดือนก่อน

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

    • @minhanhhoang8634
      @minhanhhoang8634 3 หลายเดือนก่อน

      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 3 หลายเดือนก่อน

      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.

  • @HoangLuonginh-ye9zg
    @HoangLuonginh-ye9zg 7 หลายเดือนก่อน +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 7 หลายเดือนก่อน

      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 3 หลายเดือนก่อน +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 3 หลายเดือนก่อน

      @@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 3 หลายเดือนก่อน

      @@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
      )

  • @thachnguyen8539
    @thachnguyen8539 10 หลายเดือนก่อน

    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
    )

  • @HuyLeHong-yi7ds
    @HuyLeHong-yi7ds 6 หลายเดือนก่อน

    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

  • @longtran8099
    @longtran8099 11 หลายเดือนก่อน

    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] )
    );

  • @Bang-zd1sw
    @Bang-zd1sw 7 หลายเดือนก่อน

    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
    )

  • @minhbaohac5589
    @minhbaohac5589 10 หลายเดือนก่อน

    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
    )

  • @phuonghongngo4285
    @phuonghongngo4285 2 หลายเดือนก่อน

    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);

  • @giapnguyen4109
    @giapnguyen4109 3 หลายเดือนก่อน

    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

    )

  • @KhaiTinh-tb4rs
    @KhaiTinh-tb4rs 2 หลายเดือนก่อน

    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
    );

  • @nguyenhaithanh1982
    @nguyenhaithanh1982 4 หลายเดือนก่อน

    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
    )

  • @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
    );

  • @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

  • @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

  • @t04n26
    @t04n26 10 หลายเดือนก่อน

    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

  • @nhutcodeguide
    @nhutcodeguide 4 หลายเดือนก่อน

    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)

  • @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]
    )
    ) ;

  • @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 หลายเดือนก่อน

    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

  • @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 8 หลายเดือนก่อน

    🗣🗣
    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)
    )

  • @thanggg4946
    @thanggg4946 7 หลายเดือนก่อน

    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;

  • @nguyenxuanbach2672
    @nguyenxuanbach2672 หลายเดือนก่อน

    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

  • @thanhkhoi5714
    @thanhkhoi5714 8 หลายเดือนก่อน

    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
    );

  • @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);