Примечание. При вставке примеров в окно конструктора звёздочки вставлять не нужно.
 Средняя цена по районам.
 Каким образом можно узнавать среднюю цену по районам города?
*****************************************************************
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-2025 Квартал ПРО - програми для нерухомості. Всі права захищені.
При використанні та поширенні інформації обов'язково вказуйте адресу джерела.
***
На сайті 172 гостя та 0 користувачів