Полезные запросы
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 6 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
| − | Ниже приводится список полезных запросов. | + | Ниже приводится список полезных запросов к таблицам Гедымина. По этой теме, см. также [[Полезные запросы к системным таблицам Firebird]]. |
== Документы == | == Документы == | ||
| Строка 69: | Строка 69: | ||
[[Category:База данных]] | [[Category:База данных]] | ||
| + | [[Category:Школа системного администратора]] | ||
Текущая версия на 17:14, 18 мая 2011
Ниже приводится список полезных запросов к таблицам Гедымина. По этой теме, см. также Полезные запросы к системным таблицам Firebird.
[править] Документы
Среднее количество позиций по документу с позициями в базе данных:
select (select count (*) from gd_document where not parent is null) / (select count (distinct parent) from gd_document where not parent is null) from rdb$database
[править] Сообщения
Распределение количества обращений клиентов по месяцам:
select
extract(year from m.msgstartdate),
extract(month from m.msgstartdate),
count(m.subject)
from
msg_message m join gd_contact c
on c.id = m.fromcontactkey
where
/* добавьте сюда условие для отбора по */
/* конкретному клиенту или группе клиентов */
UPPER(c.name) LIKE '%'
group by
1, 2
order by
1 desc, 2 desc
Количество обращений по клиенту за заданный промежуток времени:
select
c.name,
count(c.name)
from
gd_contact c join msg_message m
on c.id = m.fromcontactkey
where
/* укажите здесь период и условия отбора клиентов */
m.msgstartdate between '01.06.2006' and '30.11.2006'
and UPPER(c.name) LIKE 'ИП%'
group by
c.name
order by
2 desc
[править] Справочник клиентов
Запрос извлекает контакты, наименования которых начинаются с одинаковой последовательности символов. Длину последовательности можно регулировать.
select
c.id, c2.id, c.name, c2.name
from
gd_contact c join gd_contact c2
on SUBSTRING(UPPER(c.name) FROM 1 FOR 9) = SUBSTRING(UPPER(c2.name) FROM 1 FOR 9)
and c.id <> c2.id
where
/* задайте здесь условие, для того, чтобы вести поиск не по всем контактам */
UPPER(c.name) LIKE 'ИП%'