说我对上学这样的学生表:如何在拼接字段上进行分组?
St_ID |St_Name|Class_ID|Year
------+-------+--------+----
02345|John | 345|2011
07871|Jane | 234|2010
等。 我希望通过级联Class_ID & Year来运行每个Class上的查询。 即345-2011是一个类
我该如何计数(*),通过查询组中的串联字符串?
说我对上学这样的学生表:如何在拼接字段上进行分组?
St_ID |St_Name|Class_ID|Year
------+-------+--------+----
02345|John | 345|2011
07871|Jane | 234|2010
等。 我希望通过级联Class_ID & Year来运行每个Class上的查询。 即345-2011是一个类
我该如何计数(*),通过查询组中的串联字符串?
两个选项:
1)由子句
例如级联列添加到该组。
SELECT columna || columnb || columnc
FROM table
GROUP BY columna || columnb || columnc
2)由seperately
例如添加各,除了是该组中的级联柱列。
SELECT columna || columnb || columnc
FROM table
GROUP BY columna, columnb, columnc
您不需要连接它们,只需列出GROUP BY
语句中的所有三列即可。
如果您确实需要连接,那么只需将连接命令放在GROUP BY中。
我知道你是第一个,但是niktrs的回答更加详细,所以我已经接受了这个回答 –
“如果你必须连接,那么只需将连接命令放在GROUP BY中。” 这就是我正在寻找的:-) –
select Class_ID||Year as class_year, count(*)
from table
group by 1
随着group by
你可以参考列数。
肛门rententives会建议你应该指的是表达,是这样的:group by Class_ID||Year
,但我认为这是作为数字更加清晰,因为它更容易阅读,尤其是因为如果以后变化表达,你不”不得不记得要也更改组中的表达式。
这是在Oracle中工作吗?我问这个,因为这是不被SQL服务器接受的 – niktrs
它不是。你甚至不能按列别名分组。 –
如果处理不当,我更喜欢中断事件,这种类型的查询出现错误的可能性更大,因为它会运行并返回不正确的结果,为什么还要打短切成几个字符? –
我知道数据库没有正常化,但这些人一直在Excel中保存他们的数据很长一段时间,并刚刚开始使用数据库。 –