2016-08-03 5 views
0

私は以下の最初の表のようなテーブルを持っています(正しく表示されない場合は、私はStackOverflowを初めて使っていて、質問の表をどのように表示するか分かりません) 。私はすでに重複していないIDのカウントを行うための助けを受けています(私は別個のカウントを意味するわけではありません。別個のカウントは7(a、b、c、d、e、f、私は4(a、c、d、f)の数を返すことを望んでいました。これらは複数の型コードを持たないIDです。今度は、タイプコード内に何回の回数があるかを示すために、さらにそのステップを進める必要があります。たとえば、次の2番目の表のような結果が必要です。 1つのタイプコード444(c、f)を持つ2つのIDインスタンスがあり、1つのタイプコード111(a)と222(d)を持つ1つのIDインスタンスが存在します。参考のためSQLでデータを集計する

、私を得たクエリは、一種類のみのコードを持っているIDの数は、多分これはあなたが求めているものを

select count(*) from 
(select id from 
    mytable 
    group by id 
    having count(*) =1) t 


ID|type code 
a|111 
b|222 
b|333 
c|444 
d|222 
e|111 
e|333 
e|555 
f|444 
g|333 
g|444 

Type Code|Count 
111|1 
222|1 
444|2 
+0

を。 –

+0

あなたの質問では、あなたが受けた他の助けと他の可能性については何も話さないでください。できるだけ理解しやすいように質問をしてください。 – Missy

答えて

1

があるのですか?

SELECT [type code], 
     COUNT(*) [count] 
FROM mytable 
WHERE [ID] IN (SELECT [ID] 
        FROM  mytable 
        GROUP BY [ID] 
        HAVING COUNT([type code]) = 1) 
GROUP BY [type code] 
+1

それは素晴らしい推測のように見えます。 – shawnt00

+0

区切られた識別子の角括弧は製品固有であることに注意してください。 ANSI SQLには二重引用符があります。 ''タイプコード "'。 – jarlh

+0

これは機能しました!ありがとうございました!! –

1

あなたは、ネストされた集計使用してこの問題を解決することができます:私はあなたが求めているものを理解するトラブルを抱えている

SELECT type_code, COUNT(*) 
FROM 
(-- as this looks for a single row you can simply add the type code 
    SELECT ID, MIN(type_code) as type_code 
    FROM mytable 
    GROUP BY ID 
    HAVING COUNT(*) = 1 
) AS dt 
GROUP BY type_code