• Demo Code Xếp hạng trong Query giống như hàm Rank trong Excel
  • Demo Code Xếp hạng trong Query giống như hàm Rank trong Excel

    maidinhdan > 02-03-15, 01:01 AM

    Khác với Excel có hàm Rank để xếp hạng ( xếp thứ tự hoặc xếp thứ bậc) nhưng trong Access ta không hề có hàm đó, vì vậy trong diễn đàn đã có 1 bài viết của anh Xuân Thanh nói về dùng code để xếp hạng ( Link bài viết của anh Xuân thanh: Sắp xếp thứ hạng trong Access.

    Nhân dịp có 1 bạn hỏi về tính Danh sách nhân viên có số công cao nhất, mình xin làm Demo dùng câu lệnh SQL để tạo Query tính xếp hạng.

    Cú pháp chung: để tạo cột xếp hạng
    Mã PHP:
    SELECT Tencot1Tencotnaobancanhien,
    SELECT COUNT (T1.Tencotcanxephang)
    FROM
    [TenbangA] AS T1
    WHERE T1
    .Tencotcanxephang T2.Tencotcanxephang) AS Xephang
    FROM
    [TenbangA] AS T2
    ORDER BY Tencotcanxephang DESC 

    Code theo bài:
    Mã PHP:
    SELECT T2.MANVT2.HOTENT2.DIACHIT2.MADV, (Select count(T1.NGAYCONG)
    FROM BANGLUONG AS T1
    Where T1
    .NGAYCONG < [T2.NGAYCONG]+1) AS Xephang
    FROM BANGLUONG 
    AS T2
    ORDER BY T2
    .NGAYCONG DESC

    Giải thích: Nó sẽ tạo ra một cột mới tên là [Xephang] hạng thấp nhất là 1 bạn có thể thấy tôi có dùng [T2.NGAYCONG]+1 nếu bạn không dùng +1 như code nêu trong cú pháp phía trên thì hạng thấp nhất là từ số 0,

    Hình minh họa kết quả của bạn:
    [Hình: codeSQLXephang.jpg]

    Còn nếu chỉ cần tìm ra 1 người duy nhất ta phát biểu như sau
    Mã PHP:
    SELECT FROM BANGLUONG
    WHERE NGAYCONG In 
    (SELECT MAX(NGAYCONGfrom BANGLUONG;); 

    Demo: https://sites.google.com/site/congthucas...ects=0&d=1

    Vì nó giống như một hàm Rank, rất mong anh NoName cho phép để trong chuyên mục Thư viện hàm.