的次數最少我有一個表中的列如何選擇的值複製在SQL
FacilityID,服務器名
與facilityID是主鍵和服務器名是服務器的數據該設施位於。
當我們添加一個新的設施時,我希望能夠選擇使用最少次數的服務器名稱,但我不知道如何做到這一點。
我想它會使用計數功能,但我不確定涉及的語法。
任何幫助將不勝感激。
的次數最少我有一個表中的列如何選擇的值複製在SQL
FacilityID,服務器名
與facilityID是主鍵和服務器名是服務器的數據該設施位於。
當我們添加一個新的設施時,我希望能夠選擇使用最少次數的服務器名稱,但我不知道如何做到這一點。
我想它會使用計數功能,但我不確定涉及的語法。
任何幫助將不勝感激。
依賴於數據庫,在MSSQL我會做:
select top 1 FacilityID,count(servername) over (partition by FacilityID) as Cardinality from tablename order by Cardinality asc
這工作完美。非常感謝你! – Veggie
您可以使用COUNT,然後在MIN之外。
Select MIN (x.myCount)
FROM (
select COUNT (servername) as myCount
from ...
GROUP BY servername) as x
這裏很少有錯誤...需要別名子查詢,需要一個由facilityID而不是servername組成的羣組,在最小計數的主要子句中缺少group,並且查詢將返回所有facilityID和它們的計數的完整列表,而不僅僅是最小的。 – Twelfth
是的,對不起,我只是從腦海裏寫下來的。你也可以在外面添加HAVING,所以它只會顯示第一個。 –
你可以做到這一點與子查詢:
SELECT TOP 1 * FROM
(
SELECT servername, COUNT() Cnt
FROM MyTable
GROUP BY servername
)
ORDER BY Cnt
需要一個羣組,不是嗎? – Twelfth
@Twelfth補充。 –
SELECT * TOP 1
FROM (
Select servername , Count(FacilityID) as Count
FROM YourTable
GROUP BY FacilityID
ORDER BY Count ASC)
什麼是你的DBMS?是否支持Windowed AGgregate Functions或TOP/LIMIT? – dnoeth