"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يمكنني استخدام الأسماء المستعارة للعمود مباشرة في حسابات Select Select؟

لماذا لا يمكنني استخدام الأسماء المستعارة للعمود مباشرة في حسابات Select Select؟

نشر في 2025-03-22
تصفح:775

Why Can't I Use Column Aliases Directly in the Same SELECT Statement's Calculations?

قيود على استخدام الاسم المستعار للعمود مباشرة للحساب في استعلامات SQL

في استعلام SQL معين ، في محاولة لاستخدام الأسماء المستعارة للعمود السبب الجذري هو ترتيب حساب SELECT . يقوم البرنامج بمعالجة عبارة COMPLE SELECT

في نفس الوقت ، وبالتالي لا يمكن التعرف على قيمة الاسم المستعار في تلك المرحلة الزمنية.

الحل: استخدم الفائقة الفرعية المتداخلة ]

لحل هذه المشكلة ، يمكن استخدام الفخات الفرعية لتغليف الاستعلام ، وبالتالي إنشاء مجموعة بيانات وسيطة بشكل فعال. في هذا المساع الفرعي ، يمكنك إنشاء أسماء الأسماء المطلوبة للعمود

AVG_TIME و cnt

.

حدد stddev_time ، max_time ، avg_time ، min_time ، cnt ، round (avg_time * cnt ، 2) كتباطؤ من ( يختار COALESCE (جولة (stddev_samp (الوقت) ، 2) ، 0) كـ stddev_time ، الحد الأقصى (الوقت) كـ max_time ، جولة (AVG (الوقت) ، 2) مثل AVG_TIME ، دقيقة (الوقت) كما min_time ، العد (المسار) مثل CNT ، طريق من وقت التحميل مجموعة بواسطة طريق ترتيب AVG_TIME DESC الحد 10 ) x ؛

الآن ، عند تنفيذ هذا الاستعلام ، يتم حساب الاسم الفرعي لأول مرة لإنشاء مجموعة بيانات تحتوي على الاسم المستعار للعمود المطلوب. بعد ذلك ، يمكن لبيان SELECT
SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown
FROM (
    SELECT 
        COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, 
        MAX(time) as max_time, 
        ROUND(AVG(time), 2) as avg_time, 
        MIN(time) as min_time, 
        COUNT(path) as cnt, 
        path
    FROM 
        loadtime
    GROUP BY
        path
    ORDER BY
        avg_time DESC
    LIMIT 10
) X;
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3