Обмен отчётами

Модуль формирования произвольных отчётов и обмен отчётами
~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Обмен отчётами

Сообщение ~AsmodeuS~ »

Данный раздел был создан для обмета произвольными отчётами между абонентами

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Начисление и задолженность за период

Код: Выделить всё

Начисление и задолженность за период
=============================
Начисление и задолженность за период
=============================
(SELECT 
  pi.uid, 
  pi.fio,  
  pi.pasport_num,
  'pi._bank_account',
  f.dsc, 
  f.sum,
  f.date
FROM users u
LEFT JOIN users_pi pi ON (u.uid=pi.uid)
LEFT JOIN fees f  ON (f.uid=pi.uid)
WHERE f.date>'%DATE_FROM%' AND f.date<'%DATE_TO%' AND u.gid='%GID%'
)
UNION 
(SELECT 
  pi2.uid, 
  pi2.fio,  
  pi2.pasport_num,
  'pi._bank_account',
  '!!! Debet', 
  f2.last_deposit,
  f2.date  
FROM users u2
LEFT JOIN users_pi pi2 ON (u2.uid=pi2.uid)
LEFT JOIN fees f2 ON (f2.uid=pi2.uid)
WHERE f2.date>'%DATE_FROM%' AND f2.date<'%DATE_TO%' AND f2.last_deposit<0 AND u2.gid='%GID%'
GROUP BY u2.uid
ORDER BY 1
)
ORDER BY 1
=============================

=============================

=============================

Makioro
Сообщения: 241
Зарегистрирован: Ср апр 27, 2011 11:09 am

Re: Обмен отчётами

Сообщение Makioro »

Если я правильно понял, это тема чтобы выкладывать какие кто выборки из базы делает?
Ну вот я таким образом считаю количество живых абонентов (исключая неплательщиков и халявщиков и т.п., т.е. только плательщики):

Код: Выделить всё

select count(*)  from users,dv_main,tarif_plans,bills 
where bills.uid=dv_main.uid and bills.uid=users.uid and dv_main.tp_id = tarif_plans.id            # связываю таблицы
and ( bills.deposit + users.credit ) > 0                                                          # чтобы на счету кредит+депозит был больше 0
and ( tarif_plans.month_fee > 0 or tarif_plans.day_fee > 0 );                                     # чтобы тариф был не бесплатный

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Makioro писал(а):Если я правильно понял, это тема чтобы выкладывать какие кто выборки из базы делает?
Ну вот я таким образом считаю количество живых абонентов (исключая неплательщиков и халявщиков и т.п., т.е. только плательщики):

Код: Выделить всё

select count(*)  from users,dv_main,tarif_plans,bills 
where bills.uid=dv_main.uid and bills.uid=users.uid and dv_main.tp_id = tarif_plans.id            # связываю таблицы
and ( bills.deposit + users.credit ) > 0                                                          # чтобы на счету кредит+депозит был больше 0
and ( tarif_plans.month_fee > 0 or tarif_plans.day_fee > 0 );                                     # чтобы тариф был не бесплатный
просьба выкладывать запросы в формате Rwizard для удобства импорта в модуль

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Депозита больше чем на 2 месяца

Код: Выделить всё

Депозита больше чем на 2 месяца
=============================
Отображаются абоненты у которых депозита больше чем на 2 месяца работы
=============================
SELECT u.id AS login, pi.fio,
if(company.id IS NULL, b.deposit, cb.deposit) AS deposit,
tp.name AS tarif_plan_name,
tp.month_fee,
u.uid

FROM users u
LEFT JOIN users_pi pi ON (pi.uid=u.uid)
LEFT JOIN companies company ON (u.company_id=company.id)
LEFT JOIN bills b ON (u.bill_id = b.id)
LEFT JOIN bills cb ON (company.bill_id=cb.id)
LEFT JOIN dv_main dv ON (dv.uid=u.uid)
LEFT JOIN tarif_plans tp ON (dv.tp_id=tp.id)
WHERE tp.month_fee > 0
 AND if(company.id IS NULL, b.deposit, cb.deposit) > tp.month_fee * 2
=============================

=============================

=============================

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

TOP 100 "Качальщиков"
- Рейтинг "качальщиков".
- Выбор периода.
- Выбор минимального трафика для попадания в рейтинг

Код: Выделить всё

TOP 100 Качальщиков
=============================
Рейтинг качальщиков. Выбор периода. Выбор минимального трафика для попадания в рейтинг 
=============================
SELECT u.id AS login, pi.fio, sum(l.recv+l.sent) AS total_traffic, sum(l.recv) AS recv_traffic, sum(l.sent) AS sent_traffic, l.uid
FROM dv_log l
LEFT JOIN users u ON (l.uid=u.uid)
LEFT JOIN users_pi pi ON (l.uid=pi.uid)
WHERE DATE_FORMAT(l.start, '%Y-%m-%d')>='%DATE_FROM%' AND DATE_FORMAT(l.start, '%Y-%m-%d')<='%DATE_TO%'
GROUP BY l.uid
HAVING sum(l.sent+l.recv)>'%PARAMETER%'
ORDER BY 3 DESC
LIMIT 100
=============================

=============================
login:$_LOGIN:
fio:$_FIO:
total_traffic:$_TOTAL::int2byte
recv_traffic:$_SENT::int2byte
sent_traffic:$_RECV::int2byte
=============================

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Отчёт развития
- Зарегистрированные абоненты
- удалённые абоненты
- отключённые абоненты
- отчёт по группам

Код: Выделить всё

Отчёт развития
=============================
- Зарегистрированные абоненты
- удалённые абоненты
- отключённые абоненты
- отчёт по группам
=============================
SELECT DATE_FORMAT(datetime, '%Y-%m') AS month,
  sum(if(action_type = 7, 1, 0)) AS registred,
  sum(if(action_type = 12, 1, 0))  AS deleted,
  sum(if(action_type = 9, 1, 0))-sum(if(action_type = 8, 1, 0)) AS disabled,
  sum(if(action_type = 8, 1, 0)) AS enabled
  FROM admin_actions aa
  LEFT JOIN users u ON (u.uid=aa.uid)
  WHERE aa.module='' AND u.gid='%GID%' AND
    DATE_FORMAT(datetime, '%Y-%m-%d')>='%DATE_FROM%' AND DATE_FORMAT(datetime, '%Y-%m-%d')<='%DATE_TO%' 
  GROUP BY 1
     ORDER BY 1
=============================

=============================
month:$_MONTH:X_TEXT
registred:$_REGISTRATION:LINE
deleted:$_DELETED:LINE
disabled:$_DISABLE:LINE
enabled:$_ACTIVATE:LINE
=============================

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Активность тех поддержки

Код: Выделить всё

Активность поддержки
=============================
Help desk activity
=============================
SELECT DATE_FORMAT(date, '%Y-%m-%d') AS date, 
sum(if(state=0, 1, 0)) AS open, 
sum(if(state=1, 1, 0)) AS closed_unsuccessful, 
sum(if(state=2, 1, 0)) AS closed_successful, 
sum(if(state>2, 1, 0)) AS other 
FROM msgs_messages
WHERE DATE_FORMAT(date, '%Y-%m-%d')>='%DATE_FROM%' AND DATE_FORMAT(date, '%Y-%m-%d')<='%DATE_TO%'  
GROUP BY 1
=============================

=============================
date:DATE:X_TEXT
open:open:COLUMN
closed_unsuccessful:unsuccessfu:COLUMN:
closed_successful:successful:COLUMN:
other:other:COLUMN:
=============================

antoman
Сообщения: 39
Зарегистрирован: Пт май 22, 2015 6:49 am

Распределение продолжительности, количества отправленных и полученных даных по времени в логе DV

Сообщение antoman »

Код: Выделить всё

DV Log Визуализация
=============================
Распределение продолжительности, количества отправленных и полученных даных по времени в логе DV .
=============================
SELECT 
DATE_FORMAT(start, '%Y-%m-%d') AS date,  
duration AS Duration, 
recv AS Received,
sent AS Sent
 FROM dv_log 
 WHERE start BETWEEN '%DATE_FROM%' and '%DATE_TO%'
 GROUP BY 1
=============================

=============================
date:DATE:X_TEXT
Received:Received:scatter:
Sent:Sent:scatter:
Duration:Duration:scatter:
=============================

kaktatak
Сообщения: 42
Зарегистрирован: Пн фев 15, 2010 3:04 pm

Re: Обмен отчётами

Сообщение kaktatak »

~AsmodeuS~ писал(а):Активность тех поддержки

Код: Выделить всё

Активность поддержки
=============================
Help desk activity
=============================
SELECT DATE_FORMAT(date, '%Y-%m-%d') AS date, 
sum(if(state=0, 1, 0)) AS open, 
sum(if(state=1, 1, 0)) AS closed_unsuccessful, 
sum(if(state=2, 1, 0)) AS closed_successful, 
sum(if(state>2, 1, 0)) AS other 
FROM msgs_messages
WHERE DATE_FORMAT(date, '%Y-%m-%d')>='%DATE_FROM%' AND DATE_FORMAT(date, '%Y-%m-%d')<='%DATE_TO%'  
GROUP BY 1
=============================

=============================
date:DATE:X_TEXT
open:open:COLUMN
closed_unsuccessful:unsuccessfu:COLUMN:
closed_successful:successful:COLUMN:
other:other:COLUMN:
=============================

Код: Выделить всё

date:$_DATE:X_TEXT
open:$_OPEN:COLUMN
closed_unsuccessful:$_CLOSED_UNSUCCESSFUL:COLUMN:
closed_successful:$_CLOSED_SUCCESSFUL:COLUMN:
other:$_OTHER:COLUMN:
Делаем надписи полей не только на английском.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

Отчет по абонентам сколько дней в месяце они работали (IPN)

Код: Выделить всё

Рабочие не рабочии дни
=============================
Отчет по абонентам сколько дней в месяце они работали
=============================
SELECT pi.fio, 
pi.contract_id, 
COUNT(DISTINCT(date_format(start, '%Y-%m-%d'))) AS work_days, 
DAY(LAST_DAY(l.start)) - COUNT(DISTINCT(date_format(start, '%Y-%m-%d'))) AS not_working_days
FROM ipn_log l
INNER JOIN users_pi pi on(pi.uid=l.uid)
WHERE DATE_FORMAT(l.start, '%Y-%m-%d')>='%DATE_FROM%' AND DATE_FORMAT(l.start, '%Y-%m-%d')<='%DATE_TO%' 
GROUP BY l.uid
=============================

=============================
fio:ФИО
contract_id:Договор
work_days:Рабочие дни
not_working_days:Не рабочие
=============================

abcoleh
Сообщения: 57
Зарегистрирован: Ср июл 03, 2013 9:46 am

Re: Обмен отчётами

Сообщение abcoleh »

Всем привет! Произошла такая ситуация, что по состоянию на 1-е число сняло средства только у тех людей, у которых на счету было хотя бы 1 грн, а в тех у кого был 0 средства не сняло (так и должно быть, но должно перевести в статус "недостаточно средств ") и не перевело в" недостаточно средств "! Как сделать выборку тех у кого за 12-й месяц не сняло деньги?

gungalad
Сообщения: 1
Зарегистрирован: Чт май 11, 2017 3:50 pm

Re: Обмен отчётами

Сообщение gungalad »

Здравствуйте, а где можна посмотреть, как построены стандартные отчеты: по оплатам или снятию средств. Или где-нибудь есть информация как использовать поле Запрос: Всего в мастере отчетов?

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Обмен отчётами

Сообщение ~AsmodeuS~ »

gungalad писал(а):Здравствуйте, а где можна посмотреть, как построены стандартные отчеты: по оплатам или снятию средств. Или где-нибудь есть информация как использовать поле Запрос: Всего в мастере отчетов?

http://abills.net.ua/wiki/doku.php/abil ... ard_config

phantom
Сообщения: 2
Зарегистрирован: Пн июн 05, 2017 4:15 pm

Re: Обмен отчётами

Сообщение phantom »

Авторство принадлежит Makioro, я лишь привел к правильному виду
Makioro писал
Ну вот я таким образом считаю количество живых абонентов (исключая неплательщиков и халявщиков и т.п., т.е. только плательщики):

Код: Выделить всё

Количество активных абонентов
=============================
количество живых абонентов (исключая неплательщиков и халявщиков и т.п., т.е. только плательщики):
=============================
select count(*)  from users,dv_main,tarif_plans,bills
where bills.uid=dv_main.uid and bills.uid=users.uid and dv_main.tp_id = tarif_plans.id
and ( bills.deposit + users.credit ) > 0
and ( tarif_plans.month_fee > 0 or tarif_plans.day_fee > 0 )
=============================

=============================
count(*):Total
=============================

Ответить