Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận số phần trăm của một bản ghi trong một truy vấn duy nhất

COUNT(*) OVER() cung cấp cho bạn tổng số.

Chỉnh sửa Nhưng thực ra bạn cần SUM(COUNT(MyTbl.ItemID)) OVER() khi bạn tính tổng các giá trị trong cột đó.

SELECT Items.ItemID,
       [count] = COUNT(MyTbl.ItemID),
       [Percent] = 100.0 * COUNT(MyTbl.ItemID) / SUM(COUNT(MyTbl.ItemID)) OVER()
FROM   (VALUES (1,'N1'),
               (2,'N2'),
               (3,'N4'),
               (4,'N5')) Items(ItemID, ItemName)
       LEFT JOIN (VALUES(1),
                        (1),
                        (3),
                        (4),
                        (4),
                        (4)) MyTbl(ItemID)
         ON ( MyTbl.ItemID = Items.ItemID )
GROUP  BY Items.ItemID
ORDER  BY Items.ItemID  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể tải SqlServerSpatial.dll

  2. Thực thi truy vấn trên SQL Server Analysis Services với IronPython

  3. Làm cách nào để tắt bảng cập nhật cho tất cả người dùng

  4. Truyền tham số Bảng giá trị vào một thủ tục được lưu trữ

  5. Cài đặt phiên bản cụm chuyển đổi dự phòng SQL Server - Phần 1