Полезные запросы

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показаны 9 промежуточных версий 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>
 +
 +
== Справочник клиентов ==
 +
 +
Запрос извлекает контакты, наименования которых начинаются с одинаковой последовательности символов. Длину последовательности можно регулировать.
 +
 +
<pre>
 +
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 'ИП%'
 +
</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 'ИП%'
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты