web-dev-qa-db-ja.com

SQLクエリのグループ化されたCOUNTの合計

2つのフィールドを持つテーブルがあります。

 ID名
-------- 
 1アルファ
 2ベータ
 3ベータ
 4ベータ
 5チャーリー
 6チャーリー

名前、 'count'、および行 'SUM'でグループ化したい

名前カウント
 ------- ----- 
アルファ1 
ベータ3 
チャーリー2 
SUM 6

テーブルの下にSUM行を追加するクエリを作成するにはどうすればよいですか?

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

UNION ALL

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

出力:

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

使用しているrdbmsを指定せずに

このデモをご覧ください

SQL Fiddle DEMO

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

とはいえ、データベースではなくプレゼンテーション層によって合計を追加することをお勧めします。

これは、 ROLLUPを使用したデータの要約 を使用したSQL SERVERバージョンです。

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

これを試して:

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

以下のように実行してください:

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

Sqlサーバーの場合、これを試すことができます。

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

結合を使用して行を結合できます。

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

ROLLUPを使用できます

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

名前でグループ化して、そのグループのIDをカウントできます。

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

として使用する

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

クエリの後、以下を実行して合計行数を取得します

select @@ROWCOUNT
0
Chitta

私はSQLサーバーを使用していますが、次のように動作します:

キャスト(name as varchar(16))を 'Name'として、count(name)をTable1から 'Count'として、名前の共用体ごとにグループを選択 'Sum:'、count(name)をTable1から選択

0
user5948557