2017-03-31 2 views
-1

Ich habe Tabellen für Vertrieb, Fahrzeuge und Kunden und ich versuche, eine Abfrage zu erstellen, die die meistverkaufte Fahrzeugmarke mit den Vor- und Nachnamen der Kunden geben wird, die diesen Fahrzeugtyp gekauft haben. Ich habe die folgenden als Unterabfrage die Fahrzeugverkäufe in absteigender Reihenfolge zu finden:SQL Developer Who Abfrage

SELECT Vehicles.Vehicle_Make, 
COUNT(Sales.VIN) AS NumberOfSales 
FROM Sales 
INNER JOIN Vehicles ON Sales.VIN = Vehicles.VIN 
GROUP BY Vehicles.Vehicle_Make 
ORDER BY NumberOfSales DESC; 

Die Kunden und Verkaufstische haben das gemeinsame Cust_ID Spalte, aus dem ich die Kunden Vor- und Nachnamen bekommen. Da die erste Zeile mir die meistverkaufte Fahrzeugmarke geben würde, wie würde ich abfragen, um nur die erste Zeile zu erhalten und die Ergebnisse aus dieser Unterabfrage an die Tabelle Customers zu verbinden, um den Vor- und Nachnamen zu erhalten? Vielen Dank für Ihren Hinweis im Voraus.

+8

MySQL- oder SQL-Server? – SqlZim

+0

'TOP 1 'für SQL Server und' LIMIT 1' - mySQL mit einer geeigneten 'ORDER BY' für beide –

+0

SELECT TOP 1 Vehicles.Vehicle_Make, COUNT (Sales.VIN) AS NumberOfSales aus dem Verkauf INNER JOIN Fahrzeuge ON Sales .VIN = Fahrzeuge.VIN GROUP BY Vehicles.Vehicle_Make ORDER BY NummerOfSales DESC; –

Antwort

0

Etwas wie folgt aus:

select c.* 
from (
    select top 1 
     vehicles.vehicle_make 
    , count(sales.vin) as numberofsales 
    from sales 
    inner join vehicles 
     on sales.vin = vehicles.vin 
    group by vehicles.vehicle_make 
    order by numberofsales desc 
) t 
    inner join vehicles v 
    on v.vehicle_make = t.vehicle_make 
    inner join sales s 
    on s.vehicle_vin = v.vehicle_vin 
    inner join customer c 
    on c.cust_id = s.cust_id