بررسی مساله متداول Top N در نسخه های مختلف SQL Server
نویسنده: محمد سلیم آبادی
تاریخ: ۱۳۹۱/۱۱/۲۱ ۲۳:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
SELECT row_id, customer_id, order_date, order_value
FROM (SELECT *,
ROW_NUMBER() OVER(PARTITION BY customer_id
ORDER BY order_date DESC, order_value DESC) AS rnk
FROM table_name
)t
WHERE rnk = 1; SELECT *
FROM table_name t
WHERE row_id = (SELECT TOP 1 row_id
FROM table_name
WHERE customer_id = t.customer_id
ORDER BY order_date DESC, order_value DESC);SELECT MIN(row_id) AS row_id, customer_id, order_date, order_value
FROM table_name t
WHERE order_date =
(SELECT MAX(order_date)
FROM table_name
WHERE customer_id = t.customer_id)
AND order_value =
(SELECT MAX(order_value)
FROM table_name
WHERE customer_id = t.customer_id
AND order_date =
(SELECT MAX(order_date)
FROM table_name
WHERE customer_id = t.customer_id))
GROUP BY customer_id, order_date, order_value;