2016-07-30 5 views
0

これらのアイテムの一覧を表示。残りは現時点では無関係です。私が何をしたいかカウントクライアントごとの項目数と、私は私の割り当てで関係を持っている

は次のとおりです。

Find a client who has only 1 file and return the file and the client name. 

私はそれがあるクライアントは問題の発見がありません:

select file.cname, count(fid), 
from file 
group by cname 
having count(fid)=1 

しかし、私はこのクエリにFIDを追加した場合、私は悪い結果を得るに。

どうすればよいですか?

ありがとうございました。

答えて

2
select file.cname, count(fid), max(fid) 
from file 
group by cname 
having count(fid)=1 
+0

こんにちは、ありがとう。何をカウントしていたら? – Alan

+0

あなたの姓は@ Gordonが講義している学校の名前と一致しているためアップアップされました。 –

+0

カウント数= 2が別の問題です!試してみる!あなたがそれを理解できない場合は、新しい質問としてあなたが試したことを投稿し、私たちはあなたを助けようとします。 –

2

唯一つの値がある場合、あなたはそれを得るためにmin()またはmax()を使用することができます。

select f.cname, min(f.fid) as fid 
from file f 
group by f.cname 
having count(f.fid) = 1; 

あなたはhaving句でそれを使用するためにはselectcount()を指定する必要はありません(ほとんどのデータベースでは例外がありますが、あなたはHiveを使用しているとは思えません)。

+0

こんにちは、ありがとう。何をカウントしていたら? – Alan

+0

@Alan。 。 。それは別の質問かもしれません、あなたはコメントではなく質問としてそれを求めなければなりません。 –

1

アランあなたはなど、カウント= 2、3、でクライアントを選択したい場合は、下のクエリを使用し、ちょうど最後の行に番号を調整することができます。

SELECT file.cname, file.fname 
FROM file 
WHERE file.cname IN 
(SELECT file.cname 
FROM file 
GROUP BY file.cname 
HAVING COUNT(fid) = 2); 
関連する問題