Выбор наиболее распространенного значения из оператора отношения - SQL

У меня есть таблица в моей базе данных, которая имеет много записей, некоторые записи имеют одинаковое значение для одного из столбцов. например.

|  id  |  name  |  software  |
______________________________
|  1   |  john  |  photoshop |
|  2   |  paul  |  photoshop |
|  3   |  gary  |  textmate  |
|  4   |  ade   |  fireworks |
|  5   |  fred  |  textmate  |
|  6   |  bob   |  photoshop |

Я хотел бы вернуть значение наиболее часто встречающейся части программного обеспечения, используя инструкцию SQL.

Итак, в приведенном выше примере требуемый оператор SQL вернет "photoshop", поскольку он встречается больше, чем любая другая часть программного обеспечения.

Возможно ли это?

Спасибо за ваше время.

Ответ 1

select top 1 software 
from your_table 
group by software
order by count(*) desc 

Ответ 2

Это зависит от того, хотите ли вы использовать стандартные расширения SQL или поставщика (у другого плаката есть запрос "верхнего N", который не является стандартным). Стандартное решение было бы.

SELECT software, COUNT(1) 
FROM tablename
GROUP BY software
HAVING COUNT(1) = (
  SELECT MAX(sc) FROM (
    SELECT software, COUNT(1) sc
    FROM tablename
    GROUP BY software
  )
)

Примечание: это может возвращать несколько строк, если для большинства случаев привязаны несколько частей программного обеспечения.

Ответ 3

Вы можете сделать это разными способами, но самым простым способом будет это

SELECT item  
FROM (SELECT item FROM your_table GROUP BY item ORDER BY COUNT(*) desc)  
WHERE ROWNUM<=1;