2016-06-15 7 views
0

私はこのような表を持っています。count()の結果を合計します。

----------------- 
 
|City |Block | 
 
----------------- 
 
|Bekasi |A1 | 
 
|Bekasi |A1 | 
 
|Jakarta |A1 | 
 
|Jakarta |A2 | 
 
|Bandung |A3 | 
 
-----------------

私は、1と2のように、ジャカルタのブロックと1とバンドンのブロックをブカシのブロックの小計をカウントしたい場合は、正しいクエリであるので、このようなトータル値を返すのだろうか?

----------------- 
 
|City |Block | 
 
----------------- 
 
|Bekasi |A1 | 
 
|Bekasi |A1 | 
 
|Jakarta |A1 | 
 
|Jakarta |A2 | 
 
|Bandung |A3 | 
 
----------------- 
 
|TOTAL |4  | 
 
-----------------

私はこのクエリ

SELECT COUNT(DISTINCT block) AS total FROM report GROUP BY city 

を使用してみました。しかし、それだけでこのような結果を返します。

-------- 
 
|Total | 
 
-------- 
 
|1  | 
 
|1  | 
 
|2  | 
 
--------

、おかげで私を助けてください。

select 1 as rank, city, count(city) from report group by city 
union all 
select 2 as rank, 'Total', SUM(a.total) 
from 
(SELECT COUNT(DISTINCT block) AS total FROM report GROUP BY city) a 
order by rank asc 
+2

どのRDMSを使用していますか? (等mysql、オラクル、mssql) – Arion

+0

あなたはこのようなものが欲しいですか? 'SELECT sum(total)FROM(SELECT COUNT(DISTINCTブロック)AS totalレポートからGROUP BY都市)foo;'? –

+0

@Arion私はmysqlを使用しています –

答えて

1

これは、あなた総数

select SUM(a.total) 
from 
(SELECT COUNT(DISTINCT block) AS total FROM report GROUP BY city) a 

そして、あなたが同じクエリ内のデータとの合計をしたい場合は、このような何かを行うことができますの合計を与えますお試しください

select City,count(distinct Block) from report group by City With RollUp 
+0

ありがとう、それは私のように動作します:) –

0
select count (t) from (
select city,count(block) as t from report group by city, block) s 
group by city 
+0

私はあなたのコードを試しましたが、count()の結果を合計しません –

0

+0

あなたのコードは、 。しかし、あなたの応答に感謝します。 –

関連する問題