问题#105 http://sql-ex.ru
问题: 统计学家Alice,Betty,Carol和Diana在Product表中对行进行编号。 最初,他们都按照制造商名称的升序对表格行进行了排序。 Alice正在为每一行分配一个新号码,这样她就可以通过模型升序来排序同一个制造商的行。 其他三位统计员正在为同一制造商的所有行分配相同的数字。
Betty从1开始分配数字,每个下一个制造商将数字增加1。
Carol将这个号码提供给制造商,这是Alice为该制造商的第一个型号提供的数字。
戴安娜给一个制造商提供了这样的号码,爱丽丝会为这个制造商的最后一个型号提供这个号码。
输出:制造商,型号,分别由Alice,Betty,Carol和Diana分配给表行的数字。
我已经为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)专栏的解决方案。
感谢您的帮助,时间和理解。
答案 0 :(得分:2)
SELECT
(SELECT COUNT(*)
FROM product T2
WHERE T2.[maker] <= T1.[maker]) as D
FROM product T1
请参阅example