Я думаю, что попал в тупик.
Допустим, у меня есть набор данных, который довольно прост - person_id и book_id.Это довольно фактическая таблица, в которой говорится, что человек X купил книги A, B и C.
Я знаю, как узнать, сколько людей купили Книгу X и Книгу Y вместе.Это
select a.book_id as B1, b.book_id as B2, count(b.person_id) as
Bought_Together
from dbo.data a
cross join dbo.data b
where a.book_id != b.book_id and a.person_id = b.person_id
group by a.book_id, b.book_id
И снова мой мозг решил отключиться.Я знаю, что, вероятно, мне нужно было бы сделать это, чтобы count(b.person_id) / all the people that bought book A * 100
, но я не совсем уверен.
Надеюсь, я был достаточно ясен.
РЕДАКТИРОВАТЬ1: В настоящее время я использую SQL Server 2017так что я думаю, что правильный ответ - T-SQL ?.В конце формат должен быть чем-то похожим на это.Также нет случаев, когда человек А мог бы купить три копии книги X.
Book1 Book2 HowManyPeopleBoughtBook2
1 2 50%
1 3 7%
2 3 15%
2 1 40%
3 1 60%
3 2 20%
РЕДАКТИРОВАТЬ2: Допустим, в базе данных есть сотни тысяч строк.Да, это связано с курсом по науке о данных, который я прохожу - отсюда и огромное количество данных.