شرح صفوف ومحتوى الفقرة
تقوم استعلامات التجميع التقليدية عبر GROUP BY بطيّ ودمج جميع صفوف المجموعة في سطر تلخيصي واحد، مما يخفي تفاصيل السجلات الفردية. أما دوال النوافذ التحليلية (Window Functions) في MySQL 8، والتي تتميز بوجود جملة OVER (...)، فتحسب المجاميع والترتيب عبر مجموعة من الصفوف مع الاحتفاظ بكل صف فردي في النتيجة:
- عرض التفصيل والإجمالي جنباً إلى جنب: يمكنك عرض قيمة كل طلب بجانب الإجمالي العام لجميع الطلبات أو حساب النسبة المئوية لكل صف في مسح واحد.
- النافذة الشاملة الكلية: عند ترك قوسي جملة
OVERفارغين تشمل النافذة التحليلية جميع صفوف النتيجة كإطار واحد.
SQL
-- Show each order alongside grand total and percentage share
SELECT
order_id,
user_id,
total_amount,
SUM(total_amount) OVER () AS grand_total,
ROUND(
total_amount * 100.0 / SUM(total_amount) OVER (), 2
) AS pct_of_total
FROM orders WHERE status = 'paid';