按发生次数比率检索名称

时间:2010-06-15 18:08:27

标签: sql

我对SQL查询有些新意,我正在努力解决这个特殊问题。 假设我有查询返回以下3条记录(为简单起见保留为一列):
汤姆
杰克
汤姆

我希望将这些结果按名称分组,并且还包括返回的总记录中该名称出现的分数(比率)。

因此,期望的结果将是(作为两列):
汤姆| 2/3
杰克| 1/3

我该怎么办?确定分子非常简单(我可以使用COUNT()和GROUP BY名称),但是我无法将其转换为返回的总行数之比。

2 个答案:

答案 0 :(得分:3)

SELECT name, COUNT(name)/(SELECT COUNT(1) FROM names) FROM names GROUP BY name;

答案 1 :(得分:1)

由于分母是固定的,“比率”与分子成正比。除非你真的需要展示分母,否则使用类似的东西会容易得多:

select name, count(*) from your_table_name
group by name
order by count(*) desc

并且您将以正确的顺序获得正确的数据,但显示的数字将是计数而不是比率。

如果你真的想要这个分母,你可以对同一个选择的非分组版本进行count(*) - 但是根据选择的时间长短,这可能会很慢。