Tak SUBSTRING() z LOCATE() plus pewnie jeszcze REVERSE() i LENGTH() da radę wyciągnąć ciąg po ostatniej kropce.
Chociaż łatwiej będzie z SUBSTRING_INDEX():
/* Create a table called NAMES */
CREATE TABLE NAMES(id integer PRIMARY KEY, domain text);
/* Create few records in this table */
INSERT INTO NAMES VALUES(1,'domenka.pl');
INSERT INTO NAMES VALUES(2,'inna.domena.eu');
INSERT INTO NAMES VALUES(3,'cokolwiek.eu');
INSERT INTO NAMES VALUES(4,'subdomena.domeny..net');
INSERT INTO NAMES VALUES(5,'jeszcze.dluzsza.nazwa.com');
INSERT INTO NAMES VALUES(6,'example.com');
SELECT
SUBSTRING_INDEX(`domain`, '.', -1) AS 'tld',
COUNT(`id`) AS 'items_count'
FROM `NAMES`
GROUP BY tld
Kod
tld ile
pl 1
eu 2
net 1
com 2