it-swarm.com.de

SUM von gruppiertem COUNT in der SQL-Abfrage

Ich habe eine Tabelle mit 2 Feldern:

 ID Name 
-- -------
 1 Alpha 
 2 Beta 
 3 Beta 
 4 Beta 

Ich möchte sie nach Namen gruppieren, mit 'count' und einer Zeile 'SUM'.

 Name Count 
------- -----
 Alpha 1 
 Beta 3 
 Charlie 2 
SUM 6

Wie schreibe ich eine Abfrage, um eine SUM-Zeile unterhalb der Tabelle hinzuzufügen?

49
nametal
SELECT name, COUNT(name) AS count
FROM table
GROUP BY name

UNION ALL

SELECT 'SUM' name, COUNT(name)
FROM table

AUSGABE:

name                                               count
-------------------------------------------------- -----------
alpha                                              1
beta                                               3
Charlie                                            2
SUM                                                6
54
Vishal Suthar
SELECT name, COUNT(name) AS count, SUM(COUNT(name)) OVER() AS total_count
FROM Table GROUP BY name
41
Yitzchok Glancz

Ohne anzugeben, welche RDBMS Sie verwenden 

Schauen Sie sich diese Demo an

SQL Fiddle DEMO

SELECT Name, COUNT(1) as Cnt
FROM Table1
GROUP BY Name
UNION ALL
SELECT 'SUM' Name, COUNT(1)
FROM Table1

Ich würde jedoch empfehlen, dass die Summe von Ihrer Präsentationsschicht und nicht von der Datenbank hinzugefügt wird.

Dies ist ein bisschen mehr von einer SQL SERVER-Version, die Summarizing Data Using ROLLUP verwendet

SQL Fiddle DEMO

SELECT CASE WHEN (GROUPING(NAME) = 1) THEN 'SUM'
            ELSE ISNULL(NAME, 'UNKNOWN')
       END Name, 
      COUNT(1) as Cnt
FROM Table1
GROUP BY NAME
WITH ROLLUP
10
Adriaan Stander

Versuche dies:

SELECT  ISNULL(Name,'SUM'), count(*) as Count
FROM table_name
Group By Name
WITH ROLLUP
6
Koy Bun

Bitte führe folgendes aus:

Select sum(count) 
  from (select Name, 
               count(Name) as Count 
          from YourTable
      group by Name);  -- 6

Für SQL Server können Sie diesen ausprobieren.

SELECT ISNULL([NAME],'SUM'),Count([NAME]) AS COUNT
FROM TABLENAME
GROUP BY [NAME] WITH CUBE
2
sapan

Sie können union zum Verbinden von Zeilen verwenden.

select Name, count(*) as Count from yourTable group by Name
union all
select "SUM" as Name, count(*) as Count from yourTable
2
Habibillah
  with cttmp
  as
  (
  select Col_Name, count(*) as ctn from tab_name group by Col_Name having count(Col_Name)>1
  )
  select sum(ctn) from c
1
Masum

Sie können ROLLUP verwenden 

select nvl(name, 'SUM'), count(*)
from table
group by rollup(name)
1
Yitzchok Glancz

Sie können group by on name ausprobieren und die IDs in dieser Gruppe zählen. 

SELECT name, count(id) as COUNT FROM table group by name
0
Htaras

Verwenden Sie es als 

select Name, count(Name) as Count from YourTable
group by Name
union 
Select 'SUM' , COUNT(Name) from YourTable
0
Usman

Führen Sie nach der Abfrage unten aus, um die Gesamtzahl der Zeilen abzurufen

select @@ROWCOUNT
0
Chitta

Ich verwende den SQL-Server und Folgendes sollte für Sie funktionieren:

wählen Sie cast (Name als Varchar (16)) als 'Name' und Count (Name) als 'Count'. aus Tabelle 1 Gruppe nach Name Union all Wählen Sie 'Summe:', Anzahl (Name) aus Tabelle 1

0
user5948557