查询以获取列的最高 ROW_NUM() 值作为另一列的仅 RANK() 值

Query to get highest ROW_NUM() value of a column AS only RANK() value of another column

http://sql-ex.ru

上的问题 #105

这是数据库架构:

问题: 统计学家 Alice、Betty、Carol 和 Diana 正在对产品 table 中的行进行编号。 最初他们都按制造商姓名的升序对 table 行进行排序。 爱丽丝正在为每一行分配一个新数字,这样她就按模型升序对同一制造商的行进行排序。 其他三位统计学家将相同的数字分配给同一制造商的所有行。

输出:Alice、Betty、Carol 和 Diana 分别分配给 table 行的制造商、型号和编号。

我已经为 Alice(A)、Betty(B)、Carol(C) 想出了这个查询

SELECT maker, model, 
 ROW_NUMBER() OVER (ORDER BY maker,model ASC) A,
 DENSE_RANK() OVER(ORDER BY maker) B,
 RANK() OVER (ORDER BY maker) C
 FROM product
 ORDER BY model ASC

但我无法找到 Diana(D) Column 的解决方案。

根据站点,这是正确查询应给出的结果:

感谢您的帮助、时间和理解。

SELECT 
       (SELECT COUNT(*)
        FROM product T2
        WHERE T2.[maker] <= T1.[maker]) as D
FROM product T1

example