2017-08-17 8 views
0

ある列からいくつのユニークな値を別の列の値でグループ化できるかを調べようとしています。SQL:別の列の別の値を選択する

あり、私のシートに多くの列がありますが、私はに興味があるものがある:「部門」と「ユーザーの

データは、これら2つの列に、繰り返しユーザーが同じであるということですどのように

部門。

例:私が望む何

Department User 

Insights  Mike 

Insights  Mike 

Insights  Chris 

Market  Julie 

Research  Will 

Research  Sabrina 

Research  Bryan 

以下の通りです:

Department DistinctUsers 

Insights  2 

Market   1 

Research  3 

私の基本的なSQLの知識は、これはコードの構造である私に語った:

SELECT department, COUNT(DISTINCT user) 
FROM Sheet1 
GROUP BY department, user 

私は人々が実現するだろうと見てきました(SELECT DISTINCT User from Sheet1)FROM節ただし、 eをコードに統合できませんでした。

どのような提案やヒントも大変ありがとうございます。

ありがとうございます!

+1

、あなたのクエリが動作するはずです。しかし、サンプルデータと期待される出力が必要です。サンプルデータの試行は不明です。 – scsimon

+0

「COUNT(Distinct user)」にエラーがあるようです。基本的に私は部署をグループ化し、各部門の一意のユーザーを数えます - それを少しクリアすることを望みます。 – wra

+0

まさにそのクエリーが行うことです。 'group by'から' user'を削除するだけです。また、mysql <> SQLサーバー。 1つのタグを選択します。また、これはms-accessと何が関係していますか? – scsimon

答えて

4

でグループする必要が、あなただけの別にグループからユーザーを削除する必要があります。あなたの説明から

SELECT 
    department, 
    COUNT(DISTINCT [user]) as CT 
FROM Sheet1 
GROUP BY department 

アクセス

SELECT 
    department, 
    count([user]) 
FROM 
    (SELECT DISTINCT department, [user] from Sheet1) as x 
GROUP BY 
    department 
+0

その正しい。予想される結果を与えるでしょう –

+0

これはMicrosoft Accessでも同様に動作するようにこれを適応させる方法はありますか? – wra

+0

確かに@wraは編集を参照してください。 – scsimon

1

あなたの仕事をするコードが、コメントで述べたように、ユーザ

+0

これは間違っており、別のユーザが必要であるため、期待通りのものではなく、「Insights」部門の3人のユーザが表示されます2 – yanman1234

+0

これは間違っています。 – scsimon

+0

私はそれから答えを修正しました:) – Cloud

0
BEGIN TRAN 

CREATE TABLE #TMP (Department NVARCHAR(50),Name NVARCHAR(50)) 

INSERT INTO #TMP 
SELECT 'Insights', 'Mike' UNION ALL 

SELECT 'Insights','Mike' UNION ALL 

SELECT 'Insights','Chris'UNION ALL 

SELECT 'Market' ,'Julie' UNION ALL 

SELECT 'Research', 'Will'UNION ALL 

SELECT 'Research', 'Sabrina'UNION ALL 

SELECT 'Research','Bryan' 

SELECT * FROM #TMP 

SELECT department, COUNT(DISTINCT NAME) 
FROM #TMP 
GROUP BY department 

ROLLBACK TRAN 
関連する問題