2011-01-27 4 views
0

Учитывая список ...Эмуляция Uniq -c в SQL

A 
B 
A 
A 

... с желаемым выходом ...

A 3 
B 1 

Один из способов сделать это в командной строке Unix является

cat list | sort | uniq -c 

Есть ли простой способ сделать это в стандартном SQL?

ответ

1

Используйте функцию COUNT агрегат:

SELECT t.column, 
     COUNT(*) 
    FROM YOUR_TABLE t 
GROUP BY t.column 
ORDER BY t.column 
1

В SQL вы можете использовать группу по п .. е, г:

SELECT COLUMN_NAME, COUNT(1) 
    FROM YOUR_TABLE 
GROUP BY COLUMN_NAME 

http://en.wikipedia.org/wiki/Group_by_(SQL)#Queries

+0

Как вам придумайте 'COUNT (1)'? Я этого раньше не видел. Обычно используется 'COUNT (*)', 'COUNT (COLUMN_NAME)' или 'COUNT (DISTINCT COLUMN_NAME)'. – Gabe

+1

1 является допустимым выражением для функции COUNT. Я использую его, потому что он включает в себя меньшее количество ключевых штрихов по сравнению с column_name или *. Также обратите внимание, что при использовании column_name строки с нулевыми значениями для этого столбца не учитываются. – Chandu

1
select 
    letter_, 
    count(*) 
from 
    table_ 
group by 
    letter_ 
order by 
    count(*)