Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL:Mengalami masalah dengan kueri yang mendapat persentase menggunakan fungsi agregat

Gunakan:

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

Maka ini masalah memformat presisi yang Anda inginkan:

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

...akan memberikan dua tempat desimal. Keluarkan hasilnya ke INT jika Anda tidak menginginkan tempat desimal.

Anda dapat menggunakan CTE untuk meminimalkan duplikasi:

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. Bagaimana cara mengedit fungsi php saya yang ada dan menambahkan cek lain?

  2. Menggunakan SqlCommand, cara menambahkan beberapa parameter ke objeknya, penyisipan melalui winform di tabel sql

  3. Cara Mengembalikan Kunci Duplikat dari Dokumen JSON di SQL Server

  4. Bisakah saya menyimpan 'Objek' di database SQL Server?

  5. Parameter opsional di server SQL