Jak sprawdzić ile procentowo osób to kobiety mając w bazie danych same imiona?

MySQL - Tips & Tricks Zostaw komentarz

Ostatnio miałem ciekawy problem do rozwiązania. Otóż w formularzu zamówienia klient podawał imię, nazwisko i adres. Musiałem sprawdzić ile procentowo osób, to kobiety. Wiadomo, jeśli by się okazało, że zamówienia składają głównie kobiety, to można pomyśleć o jakiś bonusach, które szczególnie się spodobają kobietom (np. aby nie oferować w ramach bonusu do zamówienia jakiegoś typowo męskiego upominku).

Baza danych wyglądała tak, że były kolumny id_zamówienia, imie, nazwisko, adres, kod pocztowy, miasto, kraj itp. Nie miałem w bazie danych kolumny płeć. Ale jest pewien ciekawy trik:

Otóż w języku polskim wszystkie żeńskie imiona kończą się na literę a. Np. Ewa, Ewelina, Magdalena. Natomiast męskie imiona kończą się na dowolną literę alfabetu, tylko nie na a 🙂 Wyjątkiem jest imię Kuba, ale jest to zdrobnienie od imienia Jakub i większość osób składając zamówienie wpisuje pełne imiona a nie zdrobnienia (dobra, jest jeszcze imię Bronawentura, ale jest ono tak egzotyczne, że można je pominąć, najwyżej będą przekładamia o tysięczne części procenta).

Aby sprawdzić procentowy rozkład płci można wydać dwa takie zapytania (pierwsze sprawdza ilość zamówień, a drugie ile zamówień było złożonych przez kobiety):

SELECT count(*) FROM koszyk
SELECT count(*) FROM koszyk WHERE lcase(substr(imie, -1))='a' and lcase(imie)<>'kuba'

Tutaj małe wyjaśnienie: funkcja lcase zamienia string z wielkich liter na małe (aby w razie gdyby silnik bazy danych rozróżniał wielkość liter nie odrzucał np. imion AGA bo ktoś wpisał całe imię wielkimi literami). Funkcja substr(imie, -1) wydobywa ostatnią literę z kolumny imie. Dodatkowo do warunku dałem odrzucanie imienia Kuba 🙂

Mając dwie liczby otrzymane z obu zapytań można bardzo łatwo sprawdzić ile procent zamówień złożyły kobiety 🙂

Tutaj jedna uwaga: owa cecha imion dotyczy tylko polskojęzycznych imion. Tak więc owa sztuczka nie zadziała, gdy sporo Twoich klientów to obcokrajowcy, wtedy musiałbyś skorzystać z jakiegoś „słownika imion”.

Zanim dodasz komentarz, zapoznaj się z kilkoma podstawowymi zasadami:

  1. Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
  2. Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
  3. Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
  4. Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
  5. Komentarze nie związane z tematem notki są kasowane.
  6. Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
  7. Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
  8. Komentarze pisane niechlujnie (bez interpunkcji, w błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

3 komentarze do “Jak sprawdzić ile procentowo osób to kobiety mając w bazie danych same imiona?”

  1. Daniel Says:

    Oprócz Kuby są jeszcze inne imiona męskie kończące się na „a”, np. Barnaba. Przydałoby się przejrzeć jakąś listę imion aby je wszystkie wyłapać 🙂

    Inna sprawa to nicki – tutaj panuje już zupełna dowolność, i łatwo pomylić kobietę z mężczyzną – np. Kasiek, Agnes, itd.

  2. Damian Daszkiewicz Says:

    @Danel – po pierwsze płeć miałem sprawdzić orientacyjnie. Nawet jakby rzadkie imiona takie jak Barnaba, Bronawentura stanowiły 1% klientów, to przekłamanie by było w granicach błędu statystycznego. Czyli nie warto sobie tym głowę zawracać. Inna sprawa,że mnie interesowało aby sprawdzić, czy proporcje płci rozkładają się 50:50 czy bardziej 20:80. Więc nawet przekłamanie 5% by nie miało dla mnie większego znaczenia.

    Po drugie – sprawdzałem dane sklepu internetowego. W sklepie internetowym jak coś zamawiasz to chyba w polu imię wpiszesz Kasia a w polu Nazwisko Nowak a nie w polu imię Kasik a w polu nazwisko 92 😉

    Owszem masz rację, w portalach społecznościowych ta moja sztuczka by się nie sprawdziła (z powodu kasik’ów by były zbyt duże przekłamania i wtedy trzeba by było dodać przy rejestracji pole płeć)

  3. Patryk Says:

    Dlatego w portalach społecznościowych często jest zapytanie o płeć 🙂

Zostaw komentarz

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się