2016-12-27 4 views
0

Ich habe eine Tabelle mit Transaktionen und eine Anweisung, die die am häufigsten verwendeten Kreditkarten ausgibt. AMEX, VISA ...am häufigsten Vorkommen

SELECT CARDBRAND, 
    count(*) as cardused 
from INFO c 
left join paytb t 
    on c.CONT_ID = t.CONT_ID 
GROUP BY CARDBRAND 
ORDER BY 2 desc; 

Jetzt möchte ich eine Spalte mit der MERCHNAME der Geschäfte hinzuzufügen, die am häufigsten in einer Transaktion mit der Kreditkarte gefunden wurden:

CARDBRAND CARDUSED  MERCHNAME 
---------------------------------------- 
AMEX   182345   Gasstation 
VISA   70943   .... 
+1

bitte zeigen Schema der Tabelle – DCR

Antwort

1
SELECT CARDBRAND 
    ,count(*) as cardused 
    ,MERCHNAME 
FROM INFO c 
LEFT JOIN paytb t 
    on c.CONT_ID = t.CONT_ID 
GROUP BY CARDBRAND, 
     MERCHNAME 
ORDER BY count(*) desc; 

Vorschlag: Es wird immer empfohlen, den ColumnName oder die Funktion in diesem Fall in der ORDERBY-Klausel anstelle der Spaltennummer zu verwenden, um Verwechslungen zu vermeiden.

+0

Dies die merchnames alle mit dem am häufigsten verwendeten Karte heraus geben. Ich hätte gerne alle Karten mit dem meistbesuchten Shop. – bastel

+0

Wie @DCR sagte, "bitte Schema der Tabelle anzeigen" – chandler

+0

http://pastebin.com/FiL8b6Nf – bastel

0

Zuerst sollte Ihre korrekte Abfrage sein:

select c.cardbrand, count(t.cont_id) as cardused 
from info c left join 
    paytb t 
    on c.cont_id = t.cont_id 
group by c.cardbrand; 

Andernfalls werden Sie nie „0“ für Kartenmarken erhalten, die nicht verwendet werden.

Für die Händler Informationen können Sie Fensterfunktionen verwenden:

select cardbrand, total_cardused, merchant 
from (select c.cardbrand, t.merchant, count(t.cont_id) as cardused, 
      sum(count(t.cont_id)) over (partition by c.cardbrand) as total_cardused, 
      row_number() over (partition by c.cardbrand order by count(t.cont_id) desc) as seqnum 
     from info c left join 
      paytb t 
      on c.cont_id = t.cont_id 
     group by c.cardbrand, t.merchant 
    ) cm 
where seqnum = 1 
group by c.cardbrand; 
+0

Er sagt SQLCODE = -206, FEHLER: C.CARDBRAND IST NICHT GÜLTIG IN DER KONTEXT, WO ES VERWENDET WIRD – bastel

Verwandte Themen