Примечание. При вставке примеров в окно конструктора звёздочки вставлять не нужно.
Средняя цена по районам.
Каким образом можно узнавать среднюю цену по районам города?
*****************************************************************
SELECT AVG(A.PRICE), r.name from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
group by 2
*****************************************************************
Ещё один вариант этого запроса, более расширенный. С русскими названиями столбцов:
*******************************************************************
SELECT AVG(A.PRICE) as "Средняя цена", r.name as "Район" from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
group by 2
*******************************************************************
Ещё один вариант этого запроса, более расширенный. Средняя цена разбита не только по районам, но и по количеству комнат. С русскими названиями столбцов.
*******************************************************************
SELECT AVG(A.PRICE) as "Средняя цена", r.name as "Район", a.ROOMS_Q as "Кол-во комнат" from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
group by 2,3
*******************************************************************
Ещё один вариант этого запроса, более расширенный. Средняя цена разбита не только по районам, но и по количеству комнат. Выполнена сортировка по районам. С русскими названиями столбцов.
*******************************************************************
SELECT AVG(A.PRICE) as "Средняя цена", r.name as "Район", a.ROOMS_Q as "Кол-во комнат" from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
group by 2,3
order by 2
*******************************************************************
Определить среднюю цену по комнатам.
***********************************************************
SELECT AVG(A.PRICE) as "Средняя цена", a.ROOMS_Q as "Кол-во комнат" from APART A group by 2
***********************************************************
Определить среднюю цену по районам с количеством объектов в каждой группе.
***********************************************************
SELECT AVG(A.PRICE) as "Средняя цена", r.name as "Район", a.ROOMS_Q as "Кол-во комнат", COUNT(a.ID) AS "Количество объектов" from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
group by 2, 3
***********************************************************
Определить среднюю цену по районам только Квартир. Дома, новостройки, участки в расчёт не берём.
Это более сложно.
1. Создаём предварительно специальную процедуру в базе, которая поможет нам будущем. Т.е. это нужно сделать 1 раз. Откройте меню Сервис/Выполнить скрипт, вставьте туда текст ниже между ****** и нажмите Выполнить.
**********************************************************
SET TERM ^ ;
create or alter procedure SP_TYPES_RECURSIVE (
ANID integer,
SELF integer,
ID_SUPERTYPE integer)
returns (
ID integer)
as
BEGIN
If (ID_SUPERTYPE = -1) Then
begin
select id from types t where t.SUPERTYPE = :ID_SUPERTYPE into :ANID;
ID_SUPERTYPE = -1;
end
IF (Self = 0) THEN
BEGIN
ID = :AnID;
SUSPEND;
END
FOR SELECT id FROM TYPES
WHERE parent = :anid INTO :ID
DO begin
SUSPEND;
FOR SELECT id FROM SP_TYPES_RECURSIVE(:ID, 1, :ID_SUPERTYPE) INTO :ID
DO SUSPEND;
end
END^
SET TERM ; ^
**********************************************************
Выше - это скрипт создания процедуры. Его нужно выполнить в программе. Выделите Код мышкой и нажмите на клавиатуре сочетание Ctrl+C. Вставьте курсор в редактор скриптов и нажмите Ctrl+V. Как выполнить скрипт, читаем здесь.
Этот скрипт требуется выполнить один раз, т.к. он создаст процедуру, которая навсегда останется в базе.
2. Как только скрипт будет успешно выполнен, откройте конструктор данных.
3. Для начала требуется узнать "главный" ID типа квартир. Выполните следующий код
4. В верхнее окно вставьте следующий код:
***********************************************************
SELECT
AVG(A.PRICE) as "Средняя цена",
r.name as "Район",
a.ROOMS_Q as "Кол-во комнат",
tt1.NAME AS "Тип",
COUNT(a.ID) AS "Количество объектов"
from APART A
LEFT JOIN REGIONS R ON (r.ID = a.ID_REGION)
LEFT JOIN TYPES tt1 ON (tt1.ID = a.ID_TYPE)
where a.id_type in (SELECT t.id FROM TYPES t JOIN SP_TYPES_RECURSIVE (0, 0, 0) r ON t.id = r.id)
group by 2, 3, 4
***********************************************************
Статистика добавлений объектов недвижимости по пользователям и датам.
Каким образом можно узнавать сколько объектов добавил агент за месяц?
*****************************************************************
SELECT COUNT(J.ID) as "Количество", U.NAME as "Пользователь"
FROM JOURNAL J
LEFT JOIN
USERS U ON (U.ID = J.UID)
WHERE
J.DATE_TIME >= '01.10.2008 00:00'
AND
J.DATE_TIME <= '01.11.2008 00:00'
AND
J.TABLE_NAME = 'Кв/Дома/Ново.'
AND
J.ACT = 'ДОБАВЛЕНИЕ'
GROUP BY 2
*****************************************************************
Вот результат: за октябрь месяц 2008 года по всем пользователям и модулям дома, квартиры, новостройки
Статистика добавлений и обновлений объектов недвижимости по пользователям и датам.
Каким образом можно узнать сколько объектов добавил и обновил тот или иной пользователь?
*****************************************************************
SELECT u.name as "Пользователь",
( select count(j1.id) from JOURNAL j1
WHERE
J1.DATE_TIME BETWEEN '01.10.2008 00:00' AND '01.11.2008 00:00'
AND
J1.TABLE_NAME = 'Аренда'
AND
J1.ACT = 'ДОБАВЛЕНИЕ'
AND
j1.UID = u.ID
) as "Добавлено",
( select count(j2.id) from JOURNAL j2
WHERE
J2.DATE_TIME BETWEEN '01.10.2008 00:00' AND '01.11.2008 00:00'
AND
J2.TABLE_NAME = 'Аренда'
AND
J2.ACT = 'ОБНОВЛЕНИЕ'
AND
j2.UID = u.ID
) as "Обновлено"
from users u
*****************************************************************
или так:
*****************************************************************
SELECT U.NAME as "Пользователь",
sum (case when J.ACT = 'ДОБАВЛЕНИЕ' then 1 else 0 end) as "Добавлено",
sum (case when J.ACT = 'ОБНОВЛЕНИЕ' then 1 else 0 end) as "Обновлено"
FROM JOURNAL J
LEFT JOIN USERS U ON (U.ID = J.UID)
WHERE
J.DATE_TIME >= '01.10.2008 00:00'
AND
J.DATE_TIME <= '01.11.2008 00:00'
AND
J.TABLE_NAME = 'Аренда'
GROUP BY 1
ORDER BY 1
*****************************************************************
Вот результаты:
см. также
Описание Конструктора данных >>
• • • • • • • • •
© 2005-2024 Квартал ПРО - програми для нерухомості. Всі права захищені.
При використанні та поширенні інформації обов'язково вказуйте адресу джерела.
***
На сайті 346 гостей та 0 користувачів