Oracle包含了非常多的高级函数,row number() over (partition by) 就是其中之一。这个函数在Hive和Impala上也可以使用。
正确答案是 B: SQL Server 和 C: Oracle。
专业分析:
1. **MySQL**:
- 在MySQL 8.0版本之前,不支持`ROW_NUMBER()`和`OVER (PARTITION BY)`这样的窗口函数。
- 从MySQL 8.0开始,支持`ROW_NUMBER()`和其他窗口函数,因此在最新版本中是可以使用的。但如果题目没有特别指明版本,传统上MySQL被认为不支持这些功能。
2. **SQL Server**:
- SQL Server自2005版本开始就支持窗口函数,包括`ROW_NUMBER()`和`OVER (PARTITION BY)`。因此,SQL Server是可以使用这些功能的。
3. **Oracle**:
- Oracle数据库很早就支持窗口函数,`ROW_NUMBER()`和`OVER (PARTITION BY)`在Oracle中是完全支持的,并且被广泛使用。
4. **SAS**:
- SAS本身不是一个传统意义上的数据库管理系统,而是一套用于统计分析的软件。虽然SAS可以连接到数据库并执行SQL查询,但其原生的SQL实现(PROC SQL)不支持窗口函数,如`ROW_NUMBER()`和`OVER (PARTITION BY)`。
总结:如果题目没有特别指明MySQL的版本,传统上认为MySQL不支持这些窗口函数,因此SQL Server和Oracle是明确支持`ROW_NUMBER() OVER (PARTITION BY)`的数据库。