如何在一个连续的字段上进行分组?

时间:2011-08-05 06:59:46

标签: sql oracle group-by

假设我为上学的学生提供了一张桌子:

St_ID |St_Name|Class_ID|Year
------+-------+--------+----
 02345|John   |     345|2011
 07871|Jane   |     234|2010

等等。 我希望通过连接Class_ID和amp;来对每个类运行查询。年。 即345-2011是一类

如何通过在查询中使用串联字符串来计数(*)?

3 个答案:

答案 0 :(得分:5)

两个选项:

1)将连接列添加到group by子句

EG。

SELECT columna || columnb || columnc
FROM table
GROUP BY columna || columnb || columnc

2)单独添加除了组中连接列的每一列

EG。

SELECT columna || columnb || columnc
FROM table
GROUP BY columna, columnb, columnc

答案 1 :(得分:2)

您不需要连接它们,只需列出GROUP BY语句中的所有三列。

如果你必须连接,那么只需将concatenate命令放在GROUP BY中。

答案 2 :(得分:0)

select Class_ID||Year as class_year, count(*)
from table
group by 1

使用group by,您可以参考 number 列。

肛门保证会建议您应该参考表达式,如下所示:group by Class_ID||Year,但我认为这个数字更清晰,因为它更容易阅读,尤其是因为如果您以后更改表达式,您不必记住更改组中的表达式。