|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - подскажите, как правильно составить запрос |
|
MSFT SQL Server - подскажите, как правильно составить запрос
|
Ветеран Сообщения: 549 |
Профиль | Отправить PM | Цитировать не подскажите, почему если я соединяю (inner join)
у меня получаются лишние строки. вот 2 файла http://rgho.st/8Hqr8sQSG в этом файле 11700 строк а в этом http://rgho.st/6X7VbLmjZ 700 000 соединяю по ключам "ClientID","EmailMessageId по идеи должно быть 11700 строк, а у меня 88000. Как такое возможно? откуда дубляж Дело в том, что эти 11700 из тех кто купил услугу. Там вообще нужно создать столбец и заполнить его единицами. Я это сделаю Как написать запрос, чтобы выходе была таблица где 1. первые 11700 строк это с откликом, т.е. чтобы сначала шли строки с единицами потом те что совпали по ClientID, но без единицы, а потом уже те что не совпали просто потом уже аналитики будут анализировать. |
|
Отправлено: 19:23, 16-02-2017 |
Забанен Сообщения: 793
|
1. Какой именно запрос Вы делаете? INNER JOIN еще ни о чем не говорит.
2. Не могу пройти по ссылкам. Можете схематично набросать таблицы?! 3. См. пункты 1, 2. |
Отправлено: 20:17, 16-02-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vanoman:
Цитата vanoman:
Цитата vanoman:
Цитата vanoman:
Цитата vanoman:
|
|||||
Отправлено: 20:42, 16-02-2017 | #3 |
Ветеран Сообщения: 549
|
Профиль | Отправить PM | Цитировать Запроса у меня нет, его надо написать в сиквеле, я в другой программе пробЫвал, в 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, 21-03-2017 в 21:12. Отправлено: 18:00, 17-02-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать vanoman, понимаете, в чём дело… Вы пишете, что:
Цитата vanoman:
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; Скрытый текст
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; Скрытый текст
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; Скрытый текст
Посему при попытках связывания у Вас идёт умножение сущностей. Цитата vanoman:
Цитата vanoman:
|
||||
Отправлено: 18:51, 17-02-2017 | #5 |
Ветеран Сообщения: 549
|
Профиль | Отправить PM | Цитировать 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 ClientID EmailMessageId CntTrn iDateDiff score 86139F31664463A8B7592B6887B731A9FC2C3489BB1756A5BF334CFDEA4EF604 9EDCC1391C208BA0 1 4 1 Сможете показать? т.е. на выходе должно быть так прикрепил эксель |
Отправлено: 11:17, 18-02-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vanoman:
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; Скрытый текст
Я не понимаю, как тут можно связывать. В общем, мне достаточно тяжело представить, что есть что, без подобной: Скрытый текст
|
|
Отправлено: 01:44, 19-02-2017 | #7 |
Ветеран Сообщения: 549
|
Профиль | Отправить PM | Цитировать На другом форуме нашел решение
Но с ключами, нужно играть. Вы тут правы, т.к. полного совпадения ожидать не приходится, ключи нужно менять, клиентИД+productgroupname и так далее. |
Отправлено: 10:08, 21-02-2017 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MSFT SQL Server - подскажите, как корректно составить запросы в sql | kontox | Программирование и базы данных | 1 | 17-09-2013 15:30 | |
CMD/BAT - помогите правильно составить bat файл с командой xcopy | treevalera | Скриптовые языки администрирования Windows | 9 | 25-07-2013 19:25 | |
MySQL - Подскажите, как составить специфический запрос в mysql | kontox | Программирование и базы данных | 1 | 30-04-2013 09:45 | |
Помогите составить запрос | Yuriy1990 | Вебмастеру | 1 | 20-09-2011 19:51 | |
[решено] Как правильно создать POST запрос | K.A.V. | Вебмастеру | 4 | 24-01-2010 17:01 |
|