#sql #count #google-bigquery
#sql #подсчет #google-bigquery
Вопрос:
Я хочу подсчитать, сколько человек участвовало в 2 комбинациях курсов
Допустим, у меня есть таблица1:
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
Это то, что я получил, но не работает.
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;
Комментарии:
1. можете ли вы пометить используемую СУБД? например, sql server, oracle, mysql, postgresql ..?
Ответ №1:
для BigQuery Legacy SQL или BigQuery Standard SQL (см. Включение стандартного 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
Ответ №2:
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