Tej*_*eja 5 sql sql-server postgresql sql-order-by dense-rank
我正在尝试在庞大的数据集上运行 ORDER BY 并生成密集排名值以根据密集排名提取不同数量的行。后来,我在整个过程中使用密集排名值作为代理键来推进中间结果并将其进一步用于一些性能测试。
我面临的问题:-
我遇到的问题是我将数据集从 Matrix(postgresql)(PRODUCTION environment) 迁移到 SQL Server(New environment) 并实现了密集排名功能。但是由于 SQL Server 和 Matrix 中的 ORDER BY 子句行为导致不同的密集排名结果,我无法进一步验证代码和结果。
测试示例:-
SELECT *,DENSE_RANK() OVER ( ORDER BY Col ) AS drnk FROM
(
SELECT '#2 Mayfair Terrace' AS Col
UNION
SELECT '#2 MYSTIC COURT' AS Col
)Z;
Run Code Online (Sandbox Code Playgroud)
SQL Server 输出:-
Col drnk
#2 Mayfair Terrace 1
#2 MYSTIC COURT 2
Run Code Online (Sandbox Code Playgroud)
矩阵(Postgresql)输出:-
Col drnk
#2 MYSTIC COURT 1
#2 Mayfair Terrace 2
Run Code Online (Sandbox Code Playgroud)
有人能告诉我为什么两个不同的数据库环境之间 ORDER BY 的行为存在差异吗?任何帮助,将不胜感激。谢谢。
select *
, dense_rank() over (
order by col collate sql_latin1_general_cp437_bin
) as drnk
from (
select '#2 Mayfair Terrace' as col
union all
select '#2 MYSTIC COURT' as col
) Z;
Run Code Online (Sandbox Code Playgroud)
回报
+--------------------+------+
| col | drnk |
+--------------------+------+
| #2 MYSTIC COURT | 1 |
| #2 Mayfair Terrace | 2 |
+--------------------+------+
Run Code Online (Sandbox Code Playgroud)
雷克斯特: http: //rextester.com/QGM99129
select *
, dense_rank() over (
order by col collate
sql_latin1_general_cp437_bin
) as drnk
from (
select '#2 Mayfair Terrace' as col
union all select '#2 MYSTIC COURT' as col
union all select '#2 NAYSTIC COURT' as col
union all select '#2 NaYSTIC COURT' as col
union all select '#2 LaYSTIC COURT' as col
) Z;
Run Code Online (Sandbox Code Playgroud)
回报
+--------------------+------+
| col | drnk |
+--------------------+------+
| #2 LaYSTIC COURT | 1 |
| #2 MYSTIC COURT | 2 |
| #2 Mayfair Terrace | 3 |
| #2 NAYSTIC COURT | 4 |
| #2 NaYSTIC COURT | 5 |
+--------------------+------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |