2011-01-27 44 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您可以通过子句中使用一组.. E,G:

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 2011-01-27 06:37:57

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