2016-05-05 8 views
0

SQL Fiddle wird derzeit nach unten in Bezug auf MS SQL Server-Code, ist so hier ein Dropbox-Link zu einem .txt der DDL enthält das Schema erstellen Ich verwende:um Hilfe zu bitten Factoring SQL-Code - MS SQL Server

https://www.dropbox.com/s/6si4r37449q3ajb/DDL.txt?dl=0

Ich studiere für eine Prüfung und ich weiß, es gibt eine effizientere Möglichkeit, dies zu programmieren, ich weiß einfach nicht, was es ist.

5. Suchen Sie die Abteilung mit der höchsten Anzahl installierter Personal Computer.

select top(1) pc.location, count(pc.location) as number_of_comps_in_dept 
from pc 
group by location 
order by number_of_comps_in_dept desc 

Mein Code über Werken kennzeichnete, aber was ist, wenn ich die Abteilungsnamen (mit der Bezeichnung Lage in diesem Fall) nur erhalten wollte? Ich kann nicht wirklich einen einzelnen Wert über meinen aktuellen Code zurückrufen - was für Prozeduren, Funktionen und Trigger nicht freundlich ist.

Vielen Dank für Ihre Hilfe.

+0

zu bekommen Warum nicht einfach entfernen Sie die andere Spalten aus Ihrer SELECT-Anweisung? –

+0

Wie würde ich das machen? Die aktuell ausgewählten Spalten stellen Variablen für eine Aggregatfunktion bereit. Ich bin mir ziemlich sicher, dass ich sie brauche. –

+0

Wenn Sie denken, dass Sie sie brauchen, dann ist es Zeit, SQL Grundlagen zu lernen. Nein, du brauchst sie nicht. – TomTom

Antwort

2

Sie können nur die anderen Spalten in Ihrer SELECT Anweisung entfernen. Allerdings müssen Sie die Spalte in der ORDER BY Klausel mit dem Aggregat ersetzen:

select top(1) pc.location 
from pc 
group by location 
order by count(pc.location) desc 

ONLINE DEMO

+2

Interessant. Ich wusste nicht, dass Sie Order by in Kombination mit einem Aggregat verwenden können. Vielen Dank! –

1

Verwendung resultieren aus Unterabfrage depratment Name nur

SELECT Dept_with_Max_Computers 
FROM 
(
select top(1) pc.location Dept_with_Max_Computers, count(pc.location) as number_of_comps_in_dept 
from pc 
group by location 
order by number_of_comps_in_dept desc 
) Z