2017-07-26 4 views
-1

Ich habe eine Tabelle namens Produkte, die den gesamten Katalog enthält. Diese Tabelle hat eine eindeutige Produkt_ID, die Kategorie, zu der sie gehört, und dann ein Feld Verfügbar, das anzeigt, in welchen Ländern (USA, UK, DE, ...) das Produkt verkauft werden kann. Wenn ein Produkt auf mehrere verkauft wird dann die Kombination Product_ID und verfügbare sieht aus wie:SQL - Abfrage der gleichen Spalte, aber mit 2 verschiedenen Bedingungen

23523 DE 
23523 UK 
23523 US 
... 

Ich brauche eine Abfrage zu tun, die drei Spalten erzeugt:

Category Total_Number_Products DE_Number_Products 

Ich kann dies tun auf 2 separaten Abfragen , eine für Total_Number_Products und die andere für DE_Number_Products, jede mit einer Zählung - die erste ohne Bedingung und die zweite, die prüft, ob "Verfügbar = 'DE'" ist.

Wie kann ich oder sollte ich die gleiche Spalte mit COUNT (Product_ID) zweimal auf die gleiche Abfrage, einmal für alle Produkte und dann für die DE spezifische Produkte abfragen?

Antwort

1

Bitte bedenken Sie:

select category, 
     count(*) total_number_products, 
     sum(case available when 'DE' then 1 else 0 end) de_number_products 
from products 
group by category 
0

Sie hier bedingte Aggregation tun können:

select category, 
    count(*) as total_number_products, 
    count(case when country = 'DE' then 1 end) as DE_number_products 
from your_table 
group by category; 
Verwandte Themen