Ответ 1
select top 1 software
from your_table
group by software
order by count(*) desc
У меня есть таблица в моей базе данных, которая имеет много записей, некоторые записи имеют одинаковое значение для одного из столбцов. например.
| id | name | software |
______________________________
| 1 | john | photoshop |
| 2 | paul | photoshop |
| 3 | gary | textmate |
| 4 | ade | fireworks |
| 5 | fred | textmate |
| 6 | bob | photoshop |
Я хотел бы вернуть значение наиболее часто встречающейся части программного обеспечения, используя инструкцию SQL.
Итак, в приведенном выше примере требуемый оператор SQL вернет "photoshop", поскольку он встречается больше, чем любая другая часть программного обеспечения.
Возможно ли это?
Спасибо за ваше время.
select top 1 software
from your_table
group by software
order by count(*) desc
Это зависит от того, хотите ли вы использовать стандартные расширения 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
)
)
Примечание: это может возвращать несколько строк, если для большинства случаев привязаны несколько частей программного обеспечения.
Вы можете сделать это разными способами, но самым простым способом будет это
SELECT item
FROM (SELECT item FROM your_table GROUP BY item ORDER BY COUNT(*) desc)
WHERE ROWNUM<=1;