Jak sprawdzić ile procentowo osób to kobiety mając w bazie danych same imiona?
MySQL - Tips & Tricks Zostaw komentarzOstatnio 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:
- Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
- Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
- Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
- Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
- Komentarze nie związane z tematem notki są kasowane.
- Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
- Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
- Komentarze pisane niechlujnie (bez interpunkcji, w błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

3 lip 2010 o 21:55
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.
3 lip 2010 o 23:50
@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ć)
5 lip 2010 o 23:21
Dlatego w portalach społecznościowych często jest zapytanie o płeć