Pasidarė įdomu, kokius el. pašto adresus naudoja lietuviai. Galima spėlioti kokie adresai populiariausi, bet geriau leiskime šnekėti skaičiams. Statistika paimta iš vieno mano projekto.

adreso tipas kiekis
one.lt 30 %
yahoo.com 18 %
gmail.com 15 %
delfi grupė 6 %
takas.lt 2.5 %

Šituos skaičiukus padėjo gauti kelios MySQL užklausos.

Pirmoji SQL užklausa padeda gauti el. pašo adresų host dalį ir naudotojų su tokiu adresu skaičių.

SELECT SUBSTRING(email FROM POSITION('@' IN email) + 1) AS host, COUNT(*) AS count
FROM users
GROUP by host
ORDER BY count DESC

Jeigu jūsų MySQL versija 4.1 ar naujesnė ir palaiko subselectus, tai galite gauti ir procentus.

SELECT SUBSTRING(email FROM(POSITION('@' IN email) + 1)) AS host,
       COUNT(*) AS count,
       COUNT(*) * 100 / (SELECT COUNT(*) FROM users) AS percent
FROM users
GROUP BY host
ORDER BY count DESC

Kai kurios pašto sistemos palaiko keletą adresų (tarkime Delfi Webmail paslauga). Tokiu atveju pravers tokia užklausa. Reikės tik PHP arba phpMyAdmin pagalba susižinoti įrašų skaičių.

SELECT SUBSTRING(email FROM POSITION('@' IN email) + 1) AS host
FROM users
HAVING host IN ('delfi.lt', 'centras.lt', 'email.lt', 'mail.lt', 'xxx.lt', 'bamba.lt')

Būtų įdomu sužinoti ir jūsų lankytojų naudojamų el. pašto adresų statistiką – rašykite komentaruose.

Pateikiamos užklausos išbandytos ant MySQL 4.1. Jeigu jos neveiks, gali tekti naudoti kitas SUBSTRING formas ar simbolio paieškos eilutėje funkcijas. Įdomu, kad MySQL turi begalę būdų atlikti SUBSTRING ar fragmento paiešką nurodytoje eilutėje.

Jeigu pradėjote dirbti su RubyOnRails ir turite problemų su UTF-8 palaikymu bei naudojate MySql DBVS app/controllers/application.rb faile esančioje ApplicationController klasėje įrašykite

  before_filter :configure_charsets

  def configure_charsets
    @headers["Content-Type"] = "text/html; charset=utf-8"
    suppress(ActiveRecord::StatementInvalid) do
      ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
    end
  end