SQL: получить значение из столбца, который встречался наименьшее количество раз - PullRequest
1 голос
/ 13 июля 2009

У меня есть таблица с одним полем. и имеет такие значения, как (3,7,9,11,7,11) Теперь я хочу запрос, который выберет значение, которое встречалось наименьшее количество раз, и если есть связь с минимальными вхождениями, тогда используйте наименьшее число

В этом случае ответ будет 3.

Ответы [ 3 ]

9 голосов
/ 13 июля 2009

Примерно так:

SELECT TOP 1 COUNT(*), myField
FROM myTable
GROUP BY (myField)
ORDER BY COUNT(*) ASC

ДОПОЛНИТЕЛЬНО: И с учетом ситуации с прерывателем:

SELECT TOP 1 COUNT(*), myField
FROM myTable
GROUP BY (myField)
ORDER BY COUNT(*) ASC, myField ASC
2 голосов
/ 13 июля 2009

В MySQL и PostgreSQL:

SELECT  *
FROM    (
        SELECT  field, COUNT(*) AS cnt
        FROM    mytable
        GROUP BY
                field
        ) q
ORDER BY
        cnt, field
LIMIT 1
0 голосов
/ 13 июля 2009

Предполагается, что вы используете SQL Server: если у вас есть связи для наименее частого числа, и вы хотите, чтобы все связи были возвращены, то вы можете сделать что-то вроде этого:

DECLARE @temp table (
    count int,
    myField int
)

INSERT @temp
SELECT COUNT(*), myField
FROM myTable
GROUP BY (myField)

DECLARE @minCount int

SELECT @minCount = MIN(count)
FROM @temp

SELECT count, myField
FROM @temp
WHERE count = @minCount
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...