2016-09-24 2 views
0

zu erzeugen habe ich eine Tabelle, wie unten:Postgresql in Kreuztabellen- Ergebnisse

| Email | Category | Amount | Post_date |  
| [email protected] | ATM  | 20  | 2016-09-20 | 
| [email protected] | POS  | 30  | 2016-09-21 | 
| [email protected] | FOOD  | 40  | 2016-09-22 | 
| [email protected] | ENTE  | 50  | 2016-09-23 | 

ich die Ausgabe wie folgt aussehen wollen:

| Email | Category | Last 1 day| Last 3 days | last 5 days | 
| [email protected] | ATM amount | 20  | 40  |  50  | 
|   | POS amount | 0   | 30  |  40  | 
|   | ATM count | 2   | 3   |  3  | 
|   | POS count | 0   | 0   |  3  | 

ich eine Abfrage schreiben kann eine Spalte auf einmal erzeugen, wie zum zuletzt 1 Tag, letzte 3 Tage usw.

Meine Fragen sind:

  1. Ich weiß nicht, wie man die Ergebnisse (letzten 1 Tag, letzten 3 Tage usw.) zusammensetzt.
  2. Und ich weiß nicht, wie kann ich die Säule (ATM Count) schwenkt in Reihen.
+0

Wie ist die Beziehung zwischen Ihren Beispieldaten und Ihren Ergebnissen? Das macht keinen Sinn. –

+0

Hallo Gordon, der Geldautomat ist der Dollar, der von der Person ausgegeben wurde (identifiziert per Email) während der letzten 1,3,5 usw. Tage. Die Anzahl bedeutet, wie oft die Person die Karte an ATM/POS während der vergangenen 1,3,5 Tage etc. benutzt. – Ninjia123

Antwort

0

ich stark vermuten, dass Sie eine Abfrage wie folgt wollen:

select email, category, 
     sum(case when post_date >= current_date - interval '1 day' then 1 else 0 end) as last_1, 
     sum(case when post_date >= current_date - interval '3 day' then 1 else 0 end) as last_3, 
     sum(case when post_date >= current_date - interval '5 day' then 1 else 0 end) as last_5 
from t 
group by email, category; 

Ich gebe diese Spekulation ist, denn die Frage ist nicht klar.

+0

Hallo, danke für deine Antwort. Das Ergebnis sollte jedoch nicht nach "Kategorie" gruppiert werden, da sich die Kategorie in der Ausgabe von der in der Originaltabelle unterscheidet. ATM-Betrag (Ausgabetabelle) = Summe (Betrag) wobei Kategorie = ATM in der Originaltabelle ist. und die Ergebnisse sollten sowohl Summe (Betrag) als ATM-Betrag als auch Anzahl (Betrag) als ATM-Anzahl zeigen, wie in Ihrer Abfrage gezeigt. Nochmals vielen Dank für Ihre Hilfe! – Ninjia123

Verwandte Themen