पाठ 21 / 30

Window Functions और CTEs (MySQL 8)

Window functions से rows rank करें और running totals निकालें, और common table expressions से जटिल queries संरचित करें।

Window functions

Window function संबंधित rows पर गणना करता है पर GROUP BY की तरह उन्हें collapse नहीं करता। ROW_NUMBER(), RANK() और SUM() OVER सबसे आम हैं।

SELECT customer_id, amount,
       RANK() OVER (PARTITION BY customer_id ORDER BY amount DESC) AS rnk,
       SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM orders;

WITH के साथ CTEs

Common table expression subquery को नाम देता है ताकि लंबी query ऊपर से नीचे पढ़ी जा सके।

WITH big_orders AS (
  SELECT customer_id, SUM(amount) AS total
  FROM orders
  GROUP BY customer_id
  HAVING SUM(amount) > 2000
)
SELECT c.name, b.total
FROM big_orders b
JOIN customers c ON c.id = b.customer_id;

Window functions और CTEs के लिए MySQL 8.0 या नया चाहिए। Ranking और running totals के लिए self-joins और गहरे nested subqueries की जगह इन्हें उपयोग करें।

त्वरित जाँच

त्वरित जाँच: Window function GROUP BY से कैसे अलग है?

  • यह computed value जोड़ते हुए हर row रखता है
  • यह duplicate rows हटाता है
  • यह नई table बनाता है
  • यह केवल text पर काम करता है
Answer

यह computed value जोड़ते हुए हर row रखता है — Window functions rows को collapse किए बिना rows की window पर गणना करते हैं।