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

SQL:Gặp sự cố với truy vấn lấy tỷ lệ phần trăm bằng cách sử dụng các hàm tổng hợp

Sử dụng:

  SELECT je.statusid,
         COUNT(*) AS num,
         (COUNT(*) / (SELECT COUNT(*)+.0
                       FROM JOURNAL_ENTRY) ) * 100
    FROM JOURNAL_ENTRY je
GROUP BY je.statusid

Sau đó, vấn đề là định dạng độ chính xác bạn muốn:

CAST(((COUNT(*) / (SELECT COUNT(*)+.0 FROM BCCAMPUS.dbo.COURSES_RFIP)) * 100)
     AS DECIMAL(4,2))

... sẽ cho hai chữ số thập phân. Truyền kết quả tới INT nếu bạn không muốn bất kỳ vị trí thập phân nào.

Bạn có thể sử dụng CTE để giảm thiểu sự trùng lặp:

WITH cte AS (
   SELECT je.*
     FROM JOURNAL_ENTRY je
    WHERE je.user_id = 3)
  SELECT c.statusid,
         COUNT(*) AS num,
         (COUNT(*) / (SELECT COUNT(*)+.0
                       FROM cte) ) * 100
    FROM cte c
GROUP BY c.statusid


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cài đặt sqlcmd &bcp trên SUSE

  2. Tìm những từ mà một tập hợp các chữ cái có thể tạo ra?

  3. Sắp xếp khóa chính

  4. ẩn các cột trong báo cáo pha lê lúc chạy?

  5. Không thể tải DLL 'SqlServerSpatial.dll'