我正在尝试查找一个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列?
答案 0 :(得分:0)
Scince您按a_id
和year
进行分组,当然您只能获得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。 '未来你'会感谢你。