Здравствуйте!
Я мало знаком с 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;
Суммирование происходит по всей базе, а не по базе с ограничением по дате..
Кто нибудь подскажет как это исправить?
И ещё один момент
Для всей базы выгружаются Категории, Сайты и корректно отображается доля сайта для каждой из категории. А вот доля относительно базы, выгружается некорректно. Она становится правильной, если в итоговой выгрузке просуммировать доли по одинаковым сайтам по всем категориям. Как с этим бороться?
Пожалуйста. отзовитесь! СпасибО!