Как считать запросы к доменам второго уровня, если у меня есть таблица БД с полными доменными именами? - PullRequest
0 голосов
/ 07 января 2020

У меня есть таблица table1 со столбцами domain, request_time. Вот пример записей (я проигнорировал request_time, поскольку это не важно для этого вопроса).

Domain
--------------------
abc.example1.com
def.example1.com
def.example1.com
def.example1.com
yyy.example2.com
zzz.example3.com
ghi.example1.com
zzz.example3.com
def.example1.com
yyy.example2.com
zzz.example3.com
def.example1.com
ghi.example1.com
zzz.example3.com
yyy.example2.com
yyy.example2.com
def.example1.com
yyy.example2.com
zzz.example3.com
def.example1.com
ghi.example1.com
def.example1.com
zzz.example3.com
def.example1.com
yyy.example2.com
zzz.example3.com
yyy.example2.com
abc.example1.com

Я использую этот запрос для COUNT-запросов для каждого домена:

SELECT DISTINCT Domain, COUNT(*) AS REQUESTS_COUNT
FROM table1
GROUP BY Domain
ORDER BY REQUESTS_COUNT

В результате я получаю:

def.example1.com    9
yyy.example2.com    7
zzz.example3.com    7
ghi.example1.com    3
abc.example1.com    2

Как получить результаты на основе доменного имени второго уровня?

Вот пример того, что я хочу получить :

example1.com    14
example2.com    7
example3.com    7

Я использую sqlite.

Ответы [ 2 ]

1 голос
/ 07 января 2020

Вы можете использовать substr() & instr():

select substr(domain, instr(Domain,'.') + 1), count(*) as REQUESTS_COUNT
from table1 t1
group by substr(domain, instr(Domain,'.') + 1)
0 голосов
/ 07 января 2020

Вы можете использовать Substring и CharIndex для получения желаемого результата, пожалуйста, проверьте также нижеприведенный запрос.

Это для SQL Server ..

SELECT SUBSTRING(Domain,CHARINDEX('.',domain)-1,LEN(Domain)) AS Domain_Name,Count(*) AS REQUESTS_COUNT
    FROM table1
    GROUP BY SUBSTRING(Domain,CHARINDEX('.',domain)-1,LEN(Domain))
    ORDER BY REQUESTS_COUNT

Для SQLite ..

SELECT SUBSTR(Domain,INSTR(domain,'.')+1,LENGTH(domain)-INSTR(domain,'.')) AS Domain_Name,Count(*) AS REQUESTS_COUNT
    FROM table1
    GROUP BY SUBSTR(Domain,INSTR(domain,'.')+1,LENGTH(domain)-INSTR(domain,'.')) 
    ORDER BY REQUESTS_COUNT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...