Конструктор данных и примеры Печать
Оценка пользователей: / 0
ПлохоОтлично 
Руководство пользователя - Руководство пользователя Kvartal Pro
03.09.08 09:28
В программе по недвижимости Квартал ПРО встроен конструктор данных. Для его вызова воспользуйтесь меню "Сервис->Конструктор данных". Перед Вами откроется окно конструктора, разделённое на две части. В верхнюю часть можно вносить запросы на языке SQL. Введите (вставте) текст запроса в верхнее окно и нажмите зелёную кнопку Старт (справа). В нижней части получите результат. Запрос можно сохранять для использования в дальнейшем. Результат можно распечатать или экспортировать в разные форматы. Запрос можно сохранять, указав ему удобное имя (название), чтобы каждый раз не вставлять.

 

Примечание. При вставке примеров в окно конструктора звёздочки вставлять не нужно.


Средняя цена по районам.
Каким образом можно узнавать среднюю цену по районам города?

*****************************************************************

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

*******************************************************************

alt

 

 

Определить среднюю цену по комнатам.

***********************************************************

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. Создаём предварительно специальную процедуру в базе, которая поможет нам будущем.

**********************************************************

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 ttt where ttt.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 FOR SELECT id FROM SP_TYPES_RECURSIVE(:ID, 1, :ID_SUPERTYPE) INTO :ID
DO SUSPEND;
END;

**********************************************************

Выше - это скрипт создания процедуры. Его нужно выполнить в программе. Выделите Код мышкой и нажмите на клавиатуре сочетание 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

***********************************************************

alt

 

 

Статистика добавлений объектов недвижимости по пользователям и датам.
Каким образом можно узнавать сколько объектов добавил агент за месяц?

*****************************************************************

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 года по всем пользователям и модулям дома, квартиры, новостройки

stat2

 

 

Статистика добавлений и обновлений объектов недвижимости по пользователям и датам.
Каким образом можно узнать сколько объектов добавил и обновил тот или иной пользователь?

*****************************************************************

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
*****************************************************************

Вот результаты:

alt

© 2009 "Make It!" Team. Все права защищены.

При перепечатке и распространении информации обязательно указывайте адрес источника.

 

Последнее обновление 25.03.12 19:04
 

Рейтинг@Mail.ru  PR-CY.ru Rambler's Top100

бесплатно программа учет недвижимость для риэлтера софт для агентств недвижимости квартал express