Показать полную графическую версию : подскажите, как правильно составить запрос
не подскажите, почему если я соединяю (inner join)
у меня получаются лишние строки.
вот 2 файла
http://rgho.st/8Hqr8sQSG в этом файле 11700 строк
а в этом
http://rgho.st/6X7VbLmjZ 700 000
соединяю по ключам
"ClientID","EmailMessageId
по идеи должно быть 11700 строк, а у меня 88000. Как такое возможно? откуда дубляж
Дело в том, что эти 11700 из тех кто купил услугу. Там вообще нужно создать столбец и заполнить его единицами. Я это сделаю
Как написать запрос, чтобы
выходе была таблица где
1. первые 11700 строк это с откликом, т.е. чтобы сначала шли строки с единицами
потом те что совпали по ClientID, но без единицы, а потом уже те что не совпали
просто потом уже аналитики будут анализировать.
greg zakharov
16-02-2017, 20:17
1. Какой именно запрос Вы делаете? INNER JOIN еще ни о чем не говорит.
2. Не могу пройти по ссылкам. Можете схематично набросать таблицы?!
3. См. пункты 1, 2.
почему если я соединяю (inner join) »
Где Ваш запрос?
вот 2 файла »
Где схема данных?
в этом файле 11700 строк »
11386 без заголовка.
соединяю по ключам
"ClientID","EmailMessageId »
Вот потому хотелось бы увидеть схему, дабы быть уверенным, что это действительно а) ключи и б) понять, какие именно.
по идеи должно быть 11700 строк, а у меня 88000. Как такое возможно? откуда дубляж »
Нужно видеть схему данных и сам запрос.
Запроса у меня нет, его надо написать в сиквеле, я в другой программе пробывал, в R. Вы наврядли её знаете. Но подумал в sql лучше будет. Вот и попросил помочь.
Ребят не знаю как показать структуру
вот скрин тут 2 таблицы
в таблице set 1-2 это данные из set 1-1 которые откликнулись на рекламу, я единицы проставил.
Нужно
Сджойнить эти 2 таблицы но, чтобы сначала шли эти 11700 наблюдений из set 1-2
затем все остальное
Но тут клиент id ввиде хеша. Посути это ФИо Иванов И.И.
Например
Иванов И.И. 17.02.2017 не откликнулся на е-меил "А" рассылку 0
Иванов И.И. 18.02.2017 откликнулся на е-меил "А" рассылку 1
вот отсюда то и дубли пошли. Там где score не единица заполняем по нулям.
Т.е. в итоговой таблице должно быть около 11700 наблюдений с единицами, и остальные по нулям.
690165 нулей.
Если невнятно объяснил, говорите, перефразируюсь
vanoman, понимаете, в чём дело… Вы пишете, что:
соединяю по ключам
"ClientID","EmailMessageId »
но в таблице Set 1-1.csv ни 1) поле ClientID, ни 2) поле EmailMessageId, ни 3) комбинация этих полей не может выступать в качестве первичного ключа, поскольку во всех трёх случаях наличествует дублирование значений в этих полях (или их комбинации):
SELECT [Set 1-1].ClientID, Count([Set 1-1].ClientID) AS [Count-ClientID]
FROM [Set 1-1]
GROUP BY [Set 1-1].ClientID
HAVING (((Count([Set 1-1].ClientID))>1))
ORDER BY Count([Set 1-1].ClientID) DESC;
http://i.imgur.com/bT62UZV.png
SELECT [Set 1-1].EmailMessageId, Count([Set 1-1].EmailMessageId) AS [Count-EmailMessageId]
FROM [Set 1-1]
GROUP BY [Set 1-1].EmailMessageId
HAVING (((Count([Set 1-1].EmailMessageId))>1))
ORDER BY Count([Set 1-1].EmailMessageId) DESC;
http://i.imgur.com/gdHsy2R.png
SELECT [EmailMessageId] & [ClientID] AS Выражение1, Count([EmailMessageId] & [ClientID]) AS Выражение2
FROM [Set 1-1]
GROUP BY [EmailMessageId] & [ClientID]
HAVING (((Count([EmailMessageId] & [ClientID]))>1))
ORDER BY Count([EmailMessageId] & [ClientID]) DESC;
http://i.imgur.com/dmwMOwz.png
Посему при попытках связывания у Вас идёт умножение сущностей.
Ребят не знаю как показать структуру »
схема базы данных: в Яндекс.Картинках (https://yandex.ru/images/search?text=%D1%81%D1%85%D0%B5%D0%BC%D0%B0+%D0%B1%D0%B0%D0%B7%D1%8B+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D 1%85)
в таблице set 1-2 это данные из set 1-1 которые откликнулись на рекламу, я единицы проставил. »
В выложенной Set 1-2 - Copy.csv нет поля Score и единиц.
Iska, Вы супер:)
да score нет, я просто сразу не проставил.
вот теперь есть.
http://rgho.st/92wts9QvM
Тогда подскажите, как решить задачу. Я правда извиняюсь что не могу это технически объяснить со структурой базы данных. Но ясность уже есть
1.В файле set 1_1 все наблюдения
2.в файле set 1_2 только которые отклинулись на рекламную компанию, я сделал столбец score
3. Тогда нужно
Например.
вот уникальный ID из set 1_1
ClientID EmailMessageId iDateDiff
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -3
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -3
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -1
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -1
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -1
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -2
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -2
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -2
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -202
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -3
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -392
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -390
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 -327
из set 1_2
ClientID EmailMessageId CntTrn iDateDiff score
86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 1 4 1
можно ли эту одну строчку, присобачить к тем, что из set 1_1. Это реально?
Сможете показать?
т.е. на выходе должно быть так
прикрепил эксель
Например.
вот уникальный ID из set 1_1 »
Не хотелось бы Вас разочаровывать, но и комбинация полей ClientID, EmailMessageId и iDateDiff не является уникальной в пределах таблицы:
SELECT [ClientID] & [EmailMessageId] & [iDateDiff] AS Выражение1, Count([ClientID] & [EmailMessageId] & [iDateDiff]) AS Выражение2
FROM [Set 1-1]
GROUP BY [ClientID] & [EmailMessageId] & [iDateDiff]
HAVING (((Count([ClientID] & [EmailMessageId] & [iDateDiff]))>1))
ORDER BY Count([ClientID] & [EmailMessageId] & [iDateDiff]) DESC;
http://i.imgur.com/RXbdQHd.png
Я не понимаю, как тут можно связывать.
В общем, мне достаточно тяжело представить, что есть что, без подобной:http://i.imgur.com/OtpIHC9.pngсхемы базы данных.
На другом форуме нашел решение:)
Но с ключами, нужно играть. Вы тут правы, т.к. полного совпадения ожидать не приходится, ключи нужно менять, клиентИД+productgroupname и так далее.
select clientid,emailmessageid,productgroupName,mainproductgroupname,null cnttrn,idatediff,null score from set1
union all select clientid,emailmessageid,null productgroupname,null mainproductgroupname,cnttrn,idatediff,score from set2
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.