Announcement

Collapse
No announcement yet.

Bài tập SQL khó cần người giải đây !

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
    bonus_9492
    Thành viên mới

  • bonus_9492
    replied
    Mình nghĩ cách này hay hơn nè
    ;WITH TempTable(TenSP,DVT,NUOCSX,GIA,ThuTu)
    AS
    (
    SELECT TenSanPham,DVT,NUOCSX,GIA,DENSE_RANK() OVER(PARTITION BY TenSanPham ORDER BY GIA) as ThuTu FROM SANPHAM
    )
    SELECT * FROM TempTable WHERE ThuTu=1 :salute:

    Leave a comment:

  • 10520272
    Lưu Quang Vũ

  • 10520272
    replied
    Được chứ, nhưng chắc sẽ khó hơn dùng NOT EXISTS, bạn thử xem, cũng là một cách làm mới

    Leave a comment:

  • 10520430
    Vũ Thanh Nguyên

  • 10520430
    replied
    Vậy mình có thể dùng not in thay thế cho not exists được chứ ?

    Leave a comment:

  • 10520346
    Nguyễn Huỳnh Quý Nam

  • 10520346
    replied
    Originally posted by 10520272 View Post
    Cách giải trên rất hay (và khuyến khích dùng) nhưng phải xài bảng tạm, mình có làm cách khác không dùng bảng tạm nhưng có vẻ sẽ chạy chậm hơn cái trên --> (không khuyến khích dùng :x).

    Code:
    SELECT SP.NUOCSX, SP.MASP, SP.TENSP
    FROM SANPHAM SP
    WHERE NOT EXISTS (
    	SELECT SP2.MASP
    	FROM SANPHAM SP2
    	WHERE ((SP2.NUOCSX = SP.NUOCSX) AND (SP2.GIA > SP.GIA))
    	)
    Originally posted by 10520430 View Post
    Câu làm bảng tạm mình hiểu rồi, rất cảm ơn bạn 08520467 . À bạn 10520272 ! Bạn có thể giải thích rõ hơn cho mình chỗ giải not exists của bạn được không !? Cảm ơn bạn rất nhiều
    câu truy vấn dùng not exists có thể mô tả bằng lời như sau : chọn ra những sản phẩm (nước sx, mã sp, tên sp) mà không có sản phẩm nào cùng nước sx với nó mà có giá lớn hơn nó.

    Leave a comment:

  • 10520430
    Vũ Thanh Nguyên

  • 10520430
    replied
    Câu làm bảng tạm mình hiểu rồi, rất cảm ơn bạn 08520467 . À bạn 10520272 ! Bạn có thể giải thích rõ hơn cho mình chỗ giải not exists của bạn được không !? Cảm ơn bạn rất nhiều

    Leave a comment:

  • 10520272
    Lưu Quang Vũ

  • 10520272
    replied
    Cách giải trên rất hay (và khuyến khích dùng) nhưng phải xài bảng tạm, mình có làm cách khác không dùng bảng tạm nhưng có vẻ sẽ chạy chậm hơn cái trên --> (không khuyến khích dùng :x).

    Code:
    SELECT SP.NUOCSX, SP.MASP, SP.TENSP
    FROM SANPHAM SP
    WHERE NOT EXISTS (
    	SELECT SP2.MASP
    	FROM SANPHAM SP2
    	WHERE ((SP2.NUOCSX = SP.NUOCSX) AND (SP2.GIA > SP.GIA))
    	)

    Leave a comment:

  • 08520467
    Bạch Sỹ Đức Vinh

  • 08520467
    replied
    Từ bảng SANPHAM, truy vấn danh sách các nước và giá lớn nhất của từng nước thành một bảng tạm, rồi kết bảng tạm này với bảng SANPHAM
    Code:
    SELECT SP.NUOCSX, SP.MASP, SP.TENSP 
    FROM dbo.SANPHAM SP, (SELECT NUOCSX, MAX(GIA) AS MAXGIA FROM dbo.SANPHAM GROUP BY NUOCSX) T
    WHERE SP.NUOCSX=T.NUOCSX AND SP.GIA = T.MAXGIA
    08520467
    Bạch Sỹ Đức Vinh
    Last edited by 08520467; 19-12-2011, 22:57.

    Leave a comment:

  • 10520430
    Vũ Thanh Nguyên

  • Bài tập SQL khó cần người giải đây !

    Có bảng sau : SANPHAM(TENSP,DVT,NUOCSX,GIA)
    với câu hỏi: Viết SQL với mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất.

    Rất nhiều vấn đề quanh câu hỏi này !?

LHQC

Collapse
Working...
X