Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagesql
select distinct( inet_ntoa(device_ip) ) from cdr where  init_time_gmt>='2016-01-01' and client_owner_id=2944 and ext_type='phone' and device_ip>0 
#/* или с одновременным поиском идентификатора клиента */
select distinct( inet_ntoa(device_ip) ) from cdr where  init_time_gmt>='2016-01-01' and client_owner_id=(select rc.id from ringme.client rc, ringme.domain rd where rc.domain_id=rd.id and prefix='0004' and rd.name='mydomain') and ext_type='phone' and device_ip>0 

...

select distinct( inet_ntoa(device_ip) ) from cdr where init_time_gmt>='2016-01-01' and locate('0004*', ext_name) and ext_type='phone' and device_ip>0

Warning
titleИндексы

в запросе обязательно нужно указывать период и id клиента, иначе индексы не будут работать. Например, нельзя написать запрос так

Code Block
languagesql


Warning
titleЛокальные Адреса

Иногда (около 5%) для одного и того же добавочного в адресе медиа кроме внешних адресов оказываются локальные адреса (например, вида 192.168.xxx.xxx). Для их фильтрации можно делать запрос

Code Block
languagesql
select distinct( inet_ntoa(device_ip) ) from cdr where  init_time_gmt>='2016-01-01' and client_owner_id=2944 and ext_type='phone' and device_ip>0
and not (
device_ip>>24 in (10, 127, 224) or 
device_ip>>24=192 and  (device_ip&0xFF0000)>>16=168 or
device_ip>>24=172 and  (device_ip&0xFF0000)>>16=16 or
device_ip>>24=169 and  (device_ip&0xFF0000)>>16=204
)


...