Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Прошу, помогите разобраться с SQL запросом


Vainu   (29.03.17 23:05

Здравствуйте!
Я мало знаком с SQL, но по работе приходится составить один запрос.

Есть таблица:

Дата         Сайт                 Категория
26.03.2017 mir-vnutri.ru 4-х комнатные
26.03.2017 lidgroup.ru         2-х комнатные
26.03.2017 mir-vnutri.ru 2-х комнатные

КАТЕГОРИЯ   Сайт                Дата
Х                  РД_1                 01.02.17
А                  РД_1                 02.02.17
А                  РД_2                 02.02.17
А                  РД_1                 03.02.17
Б                  РД_3                 02.02.17            
Б                  РД_2                 03.02.17
В                  РД_1                 02.02.17
У                  РД_1                 04.02.17

Хочу составить запрос, который бы вывел Категории, Сайты и их "долю голоса".

Т.е. нужно вывести сайты и то, сколько раз они встречается в выгрузке, согласно ограничениям.

Пример:
При ограничении даты с 02 по 03: Для всей таблицы доля РД_1=50%(3/6), а для Категории "А", его доля равна 66%(2/3).

При таком запросе:

form1.ADOQuery1.SQL.Clear;
SQL.Lines.Add('SELECT Недвижимость.Категория, Недвижимость.Сайт, Count(Недвижимость.Сайт) AS [Показов_в_категории],');
SQL.Lines.Add('Count([Сайт])/DCount("Категория","Недвижимость","Категория=''" & [Категория] & "''") AS [%Доля_в_категории],');
SQL.Lines.Add('Count([Сайт])/DCount("Категория","Недвижимость") AS [Доля_за_период]');
SQL.Lines.Add('FROM (SELECT * FROM Недвижимость WHERE (Дата BETWEEN :d1 AND :d2) AND (Время BETWEEN :t1 AND :t2))');
SQL.Lines.Add('GROUP BY Недвижимость.Категория, Недвижимость.Сайт;');
form1.ADOQuery1.SQL.Text:=SQL.Text;
form1.ADOQuery1.Parameters.ParamByName('d1').Value := datetostr(DatePicker1.Date);
form1.ADOQuery1.Parameters.ParamByName('d2').Value := datetostr(DatePicker2.Date);
form1.ADOQuery1.Parameters.ParamByName('t1').Value := timetostr(TimePicker1.Time);
form1.ADOQuery1.Parameters.ParamByName('t2').Value := timetostr(TimePicker2.Time);
form1.log.Lines.Add(ADOQuery1.Parameters.ParamByName('d1').Value);
form1.log.Lines.Add(ADOQuery1.Parameters.ParamByName('d2').Value);
form1.log.Lines.Add(ADOQuery1.Parameters.ParamByName('t1').Value);
form1.log.Lines.Add(ADOQuery1.Parameters.ParamByName('t2').Value);
ADOQuery1.open;
ADOQuery1.Active := true;


Суммирование происходит по всей базе, а не по базе с ограничением по дате..
Кто нибудь подскажет как это исправить?

И ещё один момент
Для всей базы выгружаются Категории, Сайты и корректно отображается доля сайта для каждой из категории. А вот доля относительно базы, выгружается некорректно. Она становится правильной, если в итоговой выгрузке просуммировать доли по одинаковым сайтам по всем категориям. Как с этим бороться?
Пожалуйста. отзовитесь! СпасибО!


stas ©   (29.04.17 12:03[1]

какая СУБД ?


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо