2016-10-19 1 views
0

私は2コースの組み合わせで同じ列からの差異の組み合わせの数を数えますか?

をどのように多くの人が参加しましたカウントしたいのですが、私はTABLE1を持っているとしましょう:

Name course 
----------------- 
Mary Biology 
Mary Chemistry 
Mary Music 
Kim  Music 
Kim  Chemistry 
Kim  Mathematics 
Ida  Mathematics 
Ida  Biology 
Ida  Music 

結果は、この

Biology Chemistry 1 
Biology music  2 
Chemistry music  2 
Mathematics music  2 

ようにする必要がありますこれは私が得たものですしかし、動作していません。 BigQueryのレガシーSQLまたはBigQueryの標準SQLのための

select * From (
select t1.course, t2.course, count (*) AS total from 
(select 
t1.name t1.course, t2.course 
from data t1 
JOIN data t2 ON t1.name=t2.name 
where t1.course<>t2.course) 
group by t1.name,t1.course,t2.course) 
order by total desc; 
+0

あなたが使用しているDBMSにタグを付けることができますか? SQL Server、oracle、mysql、postgresql ..のようなものですか? –

答えて

1

Enabling Standard SQLを参照)

SELECT 
    a.course as course_a, 
    b.course as course_b, 
    COUNT(*) as cnt 
FROM rekry_data a 
JOIN rekry_data b 
ON a.Name=b.Name 
WHERE a.course < b.course 
GROUP BY a.course, b.course 
+0

これは動作しています。 :)ありがとうミハイル – Maria

0
SELECT a.course, b.course, COUNT(*) 
FROM mytable a JOIN mytable b ON a.Name=b.Name AND a.Course <> b.Course 
GROUP BY a.course, b.course 
関連する問題