Недавно нужно было написать несколько sql запросов для биллинга АСРМ «Ника», поэтому выложу их:
Смена тарифа абонентам:
UPDATE abon SET tarif=57 WHERE tarif=58; UPDATE abon SET tarif=137 WHERE tarif=122 AND id=1478; UPDATE abon SET tarif=123 WHERE tarif=159 AND street=216;
Очистка старой истории трафика:
DELETE FROM opt_traffic where date < '2016-05-01'; DELETE FROM stat_traffic where date < '2016-05-01';
Очистка старой истории предоставленных услуг:
DELETE FROM stat_serv where date < '2016-01-01';
Очистка старой SNMP истории модемов:
DELETE FROM stat_snmp where date < '2014-01-01';
Сумма платежей за предыдущий день:
SELECT SUM(money) FROM nika_system.mon WHERE date= CURDATE() - INTERVAL 1 DAY;
Количество абонентов отключенных за неуплату:
SELECT count(*) FROM nika_system.abon WHERE killed='killed' AND state=1;
Количество абонентов отключенных оператором:
SELECT count(*) FROM nika_system.abon WHERE killed='killed' AND state=2;
Количество всех активных абонентов:
SELECT count(*) FROM nika_system.abon WHERE killed='';
Количество активных абонентов со статусом «Включен и не отключается»:
SELECT count(*) FROM nika_system.abon WHERE killed='' AND state=3;
Количество абонентов добавленых в 2016 году:
SELECT count(*) FROM nika_system.abon WHERE datetime LIKE '2016%';
Изменение или удаление начисленной услуги абоненту (где serv — ID услуги):
UPDATE stat_serv SET serv='131' WHERE user='767' AND date='2016-02-04' AND serv='64'; DELETE FROM stat_serv WHERE user='3977' AND date='2016-02-23' AND serv='64';
Пример обнуления кредита пользователям у которых кредит от -1 до -30 и на счету больше 10 грн.:
SELECT * FROM `abon` WHERE otkl = '-5' AND depozit > '10'; UPDATE abon SET otkl=0 WHERE depozit > '10' AND (otkl='-1' OR otkl='-2' OR otkl='-3' OR otkl='-4' OR otkl='-5' OR otkl='-6' OR otkl='-7' OR otkl='-8' OR otkl='-9' OR otkl='-10' OR otkl='-11' OR otkl='-12' OR otkl='-13' OR otkl='-14' OR otkl='-15' OR otkl='-16' OR otkl='-17' OR otkl='-18' OR otkl='-19' OR otkl='-20' OR otkl='-21' OR otkl='-22' OR otkl='-23' OR otkl='-24' OR otkl='-25' OR otkl='-26' OR otkl='-27' OR otkl='-28' OR otkl='-29' OR otkl='-30');
Пример выбора ID не отключенных абонентов с указанными тарифами и сортировкой по возрастанию:
SELECT id FROM nika_system.abon WHERE (tarif='121' OR tarif='135' OR tarif='136') AND killed='' ORDER BY id ASC
Изменение категории пользователям на указанной улице:
UPDATE abon SET category=1 WHERE category=7 AND street = 145;
Изменение группы для пользователей с указанными улицами:
select * FROM abon where street=74; update abon set groups=73 where street=74; update abon set groups=73 where (street=14 OR street=74 OR street=81 OR street=86 OR street=134 OR street=144 OR street=152 OR street=154 OR street=249 OR street=277 OR street=283 OR street=290 OR street=292 OR street=329);