SQL-Rezepte

Die hier beschriebenen Rezepte sind auf MySQL ausgerichtet. Data Scientists haben mit vielen verschiedenen SQL-Datenbanken zu tun, wobei MySQL optimal zum Üben ist, da es auf den meisten Rechnern einfach und vor allem kostenlos zu installieren ist.

Rezept 1: Unterschiedliche Merkmalsausprägungen auszählen für verschiedene Gruppen innerhalb eines bestimmten Zeitraums

Das Problem: In einer Datenbank (die Daten zu jedem Spiegel-Artikel der letzten Jahre enthält) existieren in einer Spalte zwei Ausprägungen eines Merkmals, in diesem Fall kostenlose und Bezahl-Inhalte. Es wird eine Tabelle benötigt, wo diese Merkmale pro Ressort gezählt werden, allerdings nur für einen bestimmten Zeitraum. Das Datum ist als date gespeichert.

Die Lösung:

select resort,
    sum(case when paid = ‘true’ then 1 else 0 end) Paid,
    sum(case when paid = ‘false’ then 1 else 0 end) Free,
    count(*) total
from spiegel
where date >= “2016-06-27” and date <= “2016-12-15”
group by resort

Rezept 2: Daten aus verschiedenen Tabellen zusammenführen und Berechnungen anstellen

Das Problem: Die Daten von Keywords und den jeweils dafür gefundenen Hosts sowie durchschnittliche Klickraten für Suchmaschinenpositionen liegen in verschiedenen Tabellen. Die Position eines Hosts soll mit der wahrscheinlichen Klickrate für diese Position mit dem Suchvolumen eines Keywords multipliziert werden.
Die Lösung:
SELECT  T2.Keyword, ROUND(T1.avg), T2.Host, T2.Position, ROUND((T1.avg*T3.CTR)/100) as Clicks
FROM  indexed T1, results T2, ctr T3
WHERE  T1.Keyword = T2.Keyword AND T2.Position = T3.Position