2014-02-12 21 views
0

的次數最少我有一個表中的列如何選擇的值複製在SQL

FacilityID,服務器名

與facilityID是主鍵和服務器名是服務器的數據該設施位於。

當我們添加一個新的設施時,我希望能夠選擇使用最少次數的服務器名稱,但我不知道如何做到這一點。

我想它會使用計數功能,但我不確定涉及的語法。

任何幫助將不勝感激。

+1

什麼是你的DBMS?是否支持Windowed AGgregate Functions或TOP/LIMIT? – dnoeth

回答

2

依賴於數據庫,在MSSQL我會做:

select top 1 FacilityID,count(servername) over (partition by FacilityID) as Cardinality from tablename order by Cardinality asc 
+0

這工作完美。非常感謝你! – Veggie

1

您可以使用COUNT,然後在MIN之外。

Select MIN (x.myCount) 
FROM (
    select COUNT (servername) as myCount 
    from ... 
    GROUP BY servername) as x 
+0

這裏很少有錯誤...需要別名子查詢,需要一個由facilityID而不是servername組成的羣組,在最小計數的主要子句中缺少group,並且查詢將返回所有facilityID和它們的計數的完整列表,而不僅僅是最小的。 – Twelfth

+0

是的,對不起,我只是從腦海裏寫下來的。你也可以在外面添加HAVING,所以它只會顯示第一個。 –

1

你可以做到這一點與子查詢:

SELECT TOP 1 * FROM 
(
    SELECT servername, COUNT() Cnt 
    FROM MyTable 
    GROUP BY servername 
) 
ORDER BY Cnt 
+0

需要一個羣組,不是嗎? – Twelfth

+0

@Twelfth補充。 –

1
SELECT * TOP 1 
FROM (
    Select servername , Count(FacilityID) as Count 
    FROM YourTable 
    GROUP BY FacilityID 
    ORDER BY Count ASC)