Полезные запросы
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 8 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
| + | Ниже приводится список полезных запросов к таблицам Гедымина. По этой теме, см. также [[Полезные запросы к системным таблицам Firebird]]. | ||
| + | |||
| + | == Документы == | ||
| + | |||
Среднее количество позиций по документу с позициями в базе данных: | Среднее количество позиций по документу с позициями в базе данных: | ||
| Строка 6: | Строка 10: | ||
from | from | ||
rdb$database | rdb$database | ||
| + | |||
| + | == Сообщения == | ||
Распределение количества обращений клиентов по месяцам: | Распределение количества обращений клиентов по месяцам: | ||
| Строка 26: | Строка 32: | ||
1 desc, 2 desc | 1 desc, 2 desc | ||
</pre> | </pre> | ||
| + | |||
| + | Количество обращений по клиенту за заданный промежуток времени: | ||
| + | |||
| + | <pre> | ||
| + | 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 | ||
| + | </pre> | ||
| + | |||
| + | == Справочник клиентов == | ||
Запрос извлекает контакты, наименования которых начинаются с одинаковой последовательности символов. Длину последовательности можно регулировать. | Запрос извлекает контакты, наименования которых начинаются с одинаковой последовательности символов. Длину последовательности можно регулировать. | ||
| Строка 40: | Строка 67: | ||
UPPER(c.name) LIKE 'ИП%' | UPPER(c.name) LIKE 'ИП%' | ||
</pre> | </pre> | ||
| + | |||
| + | [[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 'ИП%'