Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj procentową liczbę rekordów w jednym zapytaniu

COUNT(*) OVER() daje całkowitą liczbę.

Edytuj Ale tak naprawdę potrzebujesz SUM(COUNT(MyTbl.ItemID)) OVER() podczas sumowania wartości w tej kolumnie.

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. Cross Join „n” razy przy stole

  2. SQL Server - Zaokrąglaj wartości TIME do następnej minuty

  3. Sprawdź, czy pole jest numeryczne, a następnie wykonaj porównanie tylko na tych polach w jednej instrukcji?

  4. InsertAllOnSubmit wstawia tylko pierwszy rekord danych

  5. Łączenie wierszy z kolumny obliczonej aliasu