MySQL:计算不同值

时间:2015-04-29 17:44:46

标签: mysql sql

我正在尝试查找一个MySQL查询,该查询将显示一年内ID值的出现次数。

表:

a_id      year
----      ----
1        2010
1        2011
1        2012
1        2012
1        2013
1        2014
1        2015
2        2010
2        2011
2        2013
2        2014
2        2014
2        2015
3        2010
3        2010
3        2011

预期产出:

a_id    year    occurrences
----    -----   -----------
1       2010        1
1       2011        1
1       2012        2
1       2013        1
1       2014        1
1       2015        1
2       2010        1
2       2011        1
2       2013        1
2       2014        2
2       2015        1
3       2010        2
3       2011        1

我尝试了以下sql查询的内容,但它没有给我任何预期的输出。这是我努力奋斗的第三纵队。

SELECT a__id, year, count(distinct a_id) as occurrences
FROM table1
GROUP by year
ORDER by a_id

如何创建第3列?

2 个答案:

答案 0 :(得分:0)

Scince您按a_idyear进行分组,当然您只能获得1个不同的值。只需将count(distinct a_id)更改为count(*)

例如,你得到了小组:

1        2012
1        2012

请注意,在此组中,不同的a_id值为1.但您希望计算组中的所有行。使用distinct,您将在所有组中获得1。

修改

好的,我错过了您只按year进行分组,所以您也应该按a_id进行分组。答案的其余部分保持不变。所以你最终得到:

SELECT a__id, year, count(*) as occurrences
FROM table1
GROUP by a__id, year

答案 1 :(得分:0)

使用以下内容可以获得您想要的内容。

2

虽然在以前的版本中,ORDER BY可能已经得到了MySQL的保证,但现在已经弃用了。如果要确保结果排序,请添加ORDER BY。 '未来你'会感谢你。