مجموع Sql مع الشرط وظائف SQL الإجمالية - SUM، MIN، MAX، AVG، COUNT. المعلمات أو الحجج

كيف يمكنني معرفة عدد طرازات أجهزة الكمبيوتر التي ينتجها مورد معين؟ كيفية تحديد متوسط ​​سعر أجهزة الكمبيوتر التي لها نفس الشيء تحديد؟ يمكن الإجابة على هذه الأسئلة والعديد من الأسئلة الأخرى المتعلقة ببعض المعلومات الإحصائية باستخدام الوظائف النهائية (الإجمالية).. يوفر المعيار الوظائف الإجمالية التالية:

كل هذه الوظائف ترجع قيمة واحدة. وفي الوقت نفسه، وظائف العدد، الحد الأدنىو الأعلىتنطبق على أي نوع من البيانات، في حين مجموعو متوسطيتم استخدامها فقط للحقول الرقمية. الفرق بين الوظيفة عدد(*)و عدد(<имя поля>) هو أن الثاني لا يأخذ في الاعتبار القيم الخالية عند الحساب.

مثال. تعرف على الحد الأدنى والحد الأقصى لسعر أجهزة الكمبيوتر الشخصية:

مثال. أوجد العدد المتوفر من أجهزة الكمبيوتر التي تنتجها الشركة المصنعة أ:

مثال. إذا كنا مهتمين بعدد النماذج المختلفة التي تنتجها الشركة المصنعة أ، فيمكن صياغة الاستعلام على النحو التالي (باستخدام حقيقة أنه يتم تسجيل كل نموذج في جدول المنتج مرة واحدة):

مثال. ابحث عن عدد النماذج المختلفة المتاحة التي تنتجها الشركة المصنعة أ. الاستعلام مشابه للاستعلام السابق، حيث كان مطلوبًا تحديد العدد الإجمالي للنماذج التي تنتجها الشركة المصنعة أ. هنا تحتاج أيضًا إلى العثور على عدد النماذج المختلفة في طاولة الكمبيوتر (أي تلك المتاحة للبيع).

لضمان استخدام القيم الفريدة فقط عند الحصول على المؤشرات الإحصائية ومتى حجة الوظائف الإجماليةممكن استخدامه معلمة مميزة. آخر المعلمة الكلهو الإعداد الافتراضي ويفترض أن جميع القيم التي يتم إرجاعها في العمود يتم حسابها. المشغل أو العامل،

إذا أردنا الحصول على عدد نماذج الكمبيوتر الشخصي المنتجة الجميعالشركة المصنعة، سوف تحتاج إلى استخدام جملة GROUP BY، التالية نحويا أين الجمل.

جملة GROUP BY

جملة GROUP BYيستخدم لتحديد مجموعات خطوط الإخراج التي يمكن تطبيقها عليها الوظائف المجمعة (COUNT وMIN وMAX وAVG وSUM). إذا كانت هذه الجملة مفقودة وتم استخدام الوظائف التجميعية، فسيتم ذكر جميع الأعمدة ذات الأسماء فيها يختار، يجب أن تكون مدرجة في وظائف مجمعة، وسيتم تطبيق هذه الوظائف على مجموعة الصفوف بأكملها التي تلبي مسند الاستعلام. وبخلاف ذلك، كافة أعمدة قائمة SELECT غير مشمولفي الوظائف الإجمالية يجب تحديدها في جملة GROUP BY. ونتيجة لذلك، يتم تقسيم جميع صفوف استعلام الإخراج إلى مجموعات تتميز بنفس مجموعات القيم الموجودة في هذه الأعمدة. بعد ذلك، سيتم تطبيق الوظائف الإجمالية على كل مجموعة. يرجى ملاحظة أنه بالنسبة لـ GROUP BY، يتم التعامل مع جميع القيم NULL على قدم المساواة، أي. عند التجميع حسب حقل يحتوي على قيم NULL، ستقع جميع هذه الصفوف في مجموعة واحدة.
لو إذا كان هناك جملة GROUP BY، في جملة SELECT لا توجد وظائف مجمعة، فسيقوم الاستعلام ببساطة بإرجاع صف واحد من كل مجموعة. يمكن استخدام هذه الميزة، إلى جانب الكلمة الأساسية DISTINCT، لإزالة الصفوف المكررة في مجموعة النتائج.
دعونا نلقي نظرة على مثال بسيط:
حدد النموذج، COUNT(model) AS Qty_model، AVG(price) AS Avg_price
من جهاز الكمبيوتر
المجموعة حسب النموذج؛

في هذا الطلب، يتم تحديد عدد كل طراز من أجهزة الكمبيوتر الشخصية ومتوسط ​​التكلفة. تشكل جميع الصفوف التي لها نفس قيمة النموذج مجموعة، ويحسب إخراج SELECT عدد القيم ومتوسط ​​قيم السعر لكل مجموعة. ستكون نتيجة الاستعلام الجدول التالي:
نموذج الكمية_نموذج متوسط_السعر
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

إذا كان SELECT يحتوي على عمود تاريخ، فسيكون من الممكن حساب هذه المؤشرات لكل تاريخ محدد. للقيام بذلك، تحتاج إلى إضافة التاريخ كعمود تجميع، ثم سيتم حساب الوظائف المجمعة لكل مجموعة من القيم (تاريخ النموذج).

هناك عدة محددة قواعد أداء الوظائف المجمعة:

  • إذا نتيجة للطلب لم يتم تلقي أي صفوف(أو أكثر من صف واحد لمجموعة معينة)، فلا توجد بيانات مصدر لحساب أي من الوظائف المجمعة. في هذه الحالة، ستكون نتيجة الدالات COUNT صفرًا، وستكون نتيجة جميع الوظائف الأخرى NULL.
  • دعوىوظيفة مجمعة لا يمكن أن تحتوي في حد ذاتها على وظائف مجمعة(وظيفة من وظيفة). أولئك. في استعلام واحد، من المستحيل، على سبيل المثال، الحصول على الحد الأقصى من القيم المتوسطة.
  • نتيجة تنفيذ الدالة COUNT هي عدد صحيح(عدد صحيح). ترث الوظائف التجميعية الأخرى أنواع بيانات القيم التي تعالجها.
  • إذا أنتجت الدالة SUM نتيجة أكبر من الحد الأقصى لقيمة نوع البيانات المستخدم، خطأ.

لذلك، إذا كان الطلب لا يحتوي على GROUP BY الجمل، الذي - التي وظائف مجمعةمتضمن في جملة التحديد، يتم تنفيذها على كافة صفوف الاستعلام الناتجة. إذا كان الطلب يحتوي على جملة GROUP BY، كل مجموعة من الصفوف لها نفس قيم عمود أو مجموعة أعمدة محددة فيها جملة GROUP BY، يشكل مجموعة، و وظائف مجمعةيتم إجراؤها لكل مجموعة على حدة.

وجود العرض

لو حيث الشرطيةيحدد المسند لتصفية الصفوف، ثم وجود العرضينطبق بعد التجميعلتحديد مسند مشابه يقوم بتصفية المجموعات حسب القيم وظائف مجمعة. هذا الشرط ضروري للتحقق من صحة القيم التي تم الحصول عليها باستخدام وظيفة مجمعةليس من صفوف فردية لمصدر السجل المحدد في من جملة، و من مجموعات من هذه الخطوط. ولذلك، لا يمكن احتواء مثل هذا الشيك في حيث الشرطية.

يتم استخدام الدالة SUM في لغة SQL، على الرغم من بساطتها، في كثير من الأحيان عند العمل مع قاعدة البيانات. بمساعدتها، من الملائم الحصول على بعض النتائج المتوسطة أو النهائية دون اللجوء إلى مساعدة أدوات إدارة قواعد البيانات المساعدة.

بناء جملة الوظيفة

في الغالبية لغات SQLبناء جملة المبلغ هو نفسه - يتم استخدام اسم الحقل فقط أو بعض العمليات الحسابية للعديد منها كوسيطة، حيث يكون المبلغ مطلوبًا.

في حالات استثنائية، من الممكن نقل قيمة محددة كرقم أو متغير، ولكن لا يتم استخدام مثل هذه "المخططات" عمليا، لأنها لا تحمل قيمة كبيرة. فيما يلي بناء جملة الوظيفة في SQL:

sum(a) - هنا يتم استخدام بعض القيمة الرقمية أو التعبير كمعلمة a

تجدر الإشارة إلى أنه قبل المعلمة، يمكنك تعيين الكلمات الرئيسية، على سبيل المثال، DISTINCT أو ALL، والتي ستأخذ قيمًا فريدة فقط أو جميع القيم، على التوالي.

مثال على استخدام SUM في SQL

لفهم كيفية عمل الوظيفة بشكل كامل، يجدر النظر في عدة أمثلة. في SQL، يمكن استخدام SUM كنتيجة إرجاع وكقيمة متوسطة، على سبيل المثال، لاختبار شرط ما.

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

حدد المنتج، المبلغ (كمية الشراء) من مجموعة المبيعات حسب المنتج؛

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

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

حدد المنتج من (اختر المنتج، المبلغ (مبلغ الشراء) كمبلغ من المبيعات) حيث المجموع > 100.

SQL - الدرس 11. إجمالي الوظائف والأعمدة المحسوبة وطرق العرض

تسمى الوظائف الإجمالية أيضًا بالوظائف الإحصائية أو التجميعية أو المجموعية. تقوم هذه الوظائف بمعالجة مجموعة من السلاسل لحساب وإرجاع قيمة واحدة. لا يوجد سوى خمس وظائف من هذا القبيل:
  • ترجع الدالة AVG () متوسط ​​قيمة العمود.

  • الدالة COUNT()‎ ترجع عدد الصفوف في العمود.

  • ترجع الدالة MAX() أكبر قيمة في عمود.

  • تقوم الدالة MIN() بإرجاع أصغر قيمة في العمود.

  • SUM() ترجع الدالة مجموع قيم الأعمدة.

لقد التقينا بالفعل بواحد منهم - COUNT() - في الدرس 8. الآن دعونا نلتقي بالآخرين. لنفترض أننا أردنا معرفة الحد الأدنى والحد الأقصى ومتوسط ​​سعر الكتب في متجرنا. ثم من جدول الأسعار عليك أن تأخذ الحد الأدنى والحد الأقصى والمتوسط ​​لقيم عمود السعر. الطلب بسيط:

حدد الحد الأدنى (السعر)، الحد الأقصى (السعر)، المتوسط ​​(السعر) من الأسعار؛

الآن، نريد معرفة كمية البضائع التي جلبها إلينا المورد "House of Printing" (المعرف=2). إن تقديم مثل هذا الطلب ليس بالأمر السهل. دعونا نفكر في كيفية تأليفها:

1. أولاً، من جدول التوريدات (الواردة)، حدد معرفات (id_incoming) لتلك التسليمات التي تم تنفيذها من قبل المورد "Print House" (id=2):

2. الآن من جدول Supply Journal (magazine_incoming) تحتاج إلى تحديد البضائع (id_product) وكمياتها (الكمية) التي تم تنفيذها في عمليات التسليم الموجودة في النقطة 1. أي أن الاستعلام من النقطة 1 يصبح متداخلاً:

3. نحتاج الآن إلى إضافة أسعار المنتجات الموجودة إلى الجدول الناتج، والتي تم تخزينها في جدول الأسعار. أي أننا سنحتاج إلى الانضمام إلى جداول مجلة التوريد (magazine_incoming) والأسعار باستخدام عمود id_product:

4. من الواضح أن الجدول الناتج يفتقر إلى عمود المبلغ العمود المحسوب. يتم توفير القدرة على إنشاء مثل هذه الأعمدة في MySQL. للقيام بذلك، تحتاج فقط إلى تحديد اسم العمود المحسوب في الاستعلام وما يجب حسابه. في مثالنا، سيُطلق على هذا العمود اسم "الجمع"، وسيحسب حاصل ضرب عمودي الكمية والسعر. يتم فصل اسم العمود الجديد بكلمة AS:

حدد مجلة_incoming.id_product، مجلة_incoming.quantity، الأسعار. السعر، مجلة_incoming.quantity*prices.price كمجموع من مجلة_incoming، الأسعار حيث المجلة_incoming.id_product=الأسعار.id_product وid_incoming= (حدد id_incoming FROM الوارد حيث id_vendor=2)؛

5. رائع، كل ما يتعين علينا فعله هو جمع عمود المجموع ومعرفة المبلغ الذي جلبه لنا المورد "House of Printing" من البضائع. بناء الجملة لاستخدام الدالة SUM() كما يلي:

حدد SUM(column_name) من table_name؛

نحن نعرف اسم العمود - الخلاصة، ولكن ليس لدينا اسم الجدول، لأنه نتيجة استعلام. ما يجب القيام به؟ في مثل هذه الحالات، تحتوي MySQL على طرق عرض. طريقة العرض هي استعلام تحديد يتم إعطاؤه اسمًا فريدًا ويمكن تخزينه في قاعدة بيانات لاستخدامه لاحقًا.

بناء جملة إنشاء طريقة العرض كما يلي:

إنشاء عرض view_name حسب الطلب؛

لنحفظ طلبنا كطريقة عرض باسم report_vendor:

إنشاء عرض report_vendor AS حدد مجلة_incoming.id_product، مجلة_incoming.quantity، الأسعار. السعر، Magazine_incoming.quantity*prices.price كمجموع من مجلة_incoming، الأسعار من حيث المجلة_incoming.id_product=الأسعار.id_product وid_incoming= (حدد id_incoming FROM الوارد من حيث id_vendor=2 );

6. الآن يمكنك استخدام الدالة النهائية SUM():

حدد SUM(summa) من report_vendor؛

لذلك حققنا النتيجة، على الرغم من أنه كان علينا استخدام الاستعلامات المتداخلة والصلات والأعمدة المحسوبة وطرق العرض. نعم، في بعض الأحيان عليك أن تفكر للحصول على نتيجة، وبدون ذلك لا يمكنك الوصول إلى أي مكان. لكننا تطرقنا إلى موضوعين مهمين للغاية - الأعمدة المحسوبة وطرق العرض. دعونا نتحدث عنهم بمزيد من التفصيل.

الحقول المحسوبة (الأعمدة)

باستخدام مثال، نظرنا إلى حقل رياضي محسوب اليوم. أود هنا أن أضيف أنه لا يمكنك استخدام عملية الضرب (*) فحسب، بل يمكنك أيضًا استخدام الطرح (-)، والجمع (+)، والقسمة (/). بناء الجملة هو كما يلي:

حدد اسم العمود 1، اسم_العمود 2، اسم_العمود 1 * اسم_العمود 2 كما هو اسم_العمود المحسوب من اسم_الجدول؛

الفارق الدقيق الثاني هو الكلمة الأساسية AS، التي استخدمناها لتعيين اسم العمود المحسوب. في الواقع، يتم استخدام هذه الكلمة الأساسية لتعيين الأسماء المستعارة لأية أعمدة. لماذا هذا ضروري؟ لتقليل الكود وسهولة القراءة. على سبيل المثال، يمكن أن تبدو وجهة نظرنا كما يلي:

إنشاء عرض report_vendor AS حدد A.id_product، A.quantity، B.price، A.quantity*B.price AS summa FROM Magazine_incoming AS A، الأسعار AS B حيث A.id_product= B.id_product وid_incoming= (SELECT id_incoming FROM incoming) حيث id_vendor=2);

توافق على أن هذا أقصر وأكثر وضوحًا.

التمثيل

لقد نظرنا بالفعل في بناء الجملة لإنشاء طرق العرض. بمجرد إنشاء طرق العرض، يمكن استخدامها بنفس طريقة استخدام الجداول. وهذا يعني تشغيل الاستعلامات ضدها، وتصفية البيانات وفرزها، ودمج بعض طرق العرض مع طرق عرض أخرى. من ناحية، هذه طريقة مريحة للغاية للتخزين المستخدمة بشكل متكرر استعلامات معقدة(كما في مثالنا).

لكن تذكر أن طرق العرض ليست جداول، أي أنها لا تخزن البيانات، ولكنها تستردها فقط من الجداول الأخرى. وبالتالي، أولاً، عندما تتغير البيانات الموجودة في الجداول، ستتغير نتائج العرض أيضًا. وثانيًا، عند تقديم طلب إلى طريقة عرض، يتم البحث عن البيانات المطلوبة، أي أن أداء نظام إدارة قواعد البيانات ينخفض. لذلك يجب عدم إساءة معاملتهم.

في هذا كتاب مدرسيسوف تتعلم كيفية الاستخدام دالة SUMالخامس خادم قاعدة البيانات(Transact-SQL) مع بناء الجملة والأمثلة.

وصف

في SQL Server (Transact-SQL) دالة SUMإرجاع القيمة الإجمالية للتعبير.

بناء الجملة

بناء جملة الدالة SUM في SQL Server (Transact-SQL) هو:

أو يكون بناء جملة الدالة SUM عند تجميع النتائج حسب عمود واحد أو أكثر:

المعلمات أو الحجج

Expression1 , Expression2 , ... Expression_n هي تعبيرات غير مضمنة في الدالة SUM ويجب تضمينها في جملة GROUP BY في نهاية عبارة SQL.
التجميع_التعبيري هو العمود أو التعبير الذي سيتم تجميعه.
الجداول - الجداول التي تريد الحصول على السجلات منها. يجب أن يكون هناك جدول واحد على الأقل مدرج في عبارة FROM.
أين الشروط - اختياري. هذه هي الشروط التي يجب استيفاؤها للسجلات المحددة.

طلب

يمكن استخدام الدالة SUM في الإصدارات التالية من SQL Server (Transact-SQL):
SQL Server vNext، SQL Server 2016، SQL Server 2015، SQL Server 2014، SQL Server 2012، SQL Server 2008 R2، SQL Server 2008، SQL Server 2005

مثال مع حقل واحد

دعونا نلقي نظرة على بعض أمثلة وظائف SQL Server SUM لفهم كيفية استخدام وظيفة SUM في SQL Server (Transact-SQL).

على سبيل المثال، يمكنك معرفة الكمية الإجمالية لجميع المنتجات التي تزيد كميتها عن 10.

في هذا المثال للدالة SUM، قمنا بتسمية التعبير SUM(quantity) "الكمية الإجمالية". عند إرجاع مجموعة النتائج - ستظهر "الكمية الإجمالية" كاسم الحقل.

مثال على استخدام DISTINCT

يمكنك استخدام عامل التشغيل DISTINCT في الدالة SUM. على سبيل المثال واحد أدناه بيان SQLإرجاع إجمالي الراتب بقيم رواتب فريدة حيث يكون الراتب أقل من 29000 دولار في السنة.

إذا كان الراتبان 24000 دولارًا سنويًا، فسيتم استخدام واحدة فقط من تلك القيم في الدالة SUM.

مثال على استخدام الصيغة

ليس من الضروري أن يكون التعبير الموجود في الدالة SUM حقلاً واحدًا. يمكنك أيضًا استخدام الصيغة. على سبيل المثال، يمكنك حساب إجمالي العمولة.

المعاملات SQL

حدد SUM(sales * 0.03) كـ "إجمالي العمولة" من الطلبات؛

حدد المجموع (المبيعات * 0.03) كـ "إجمالي العمولة"

من الطلبات؛

مثال على استخدام GROUP BY

في بعض الحالات، ستحتاج إلى استخدام عامل التشغيل GROUP BY مع الدالة SUM.

دعونا نتعلم التلخيص. لا، هذه ليست نتائج دراسة SQL، بل نتائج قيم أعمدة جداول قاعدة البيانات. تعمل وظائف SQL التجميعية على قيم العمود لإنتاج قيمة واحدة ناتجة. وظائف SQL التجميعية الأكثر استخدامًا هي SUM وMIN وMAX وAVG وCOUNT. من الضروري التمييز بين حالتين لاستخدام الوظائف التجميعية. أولاً، يتم استخدام الوظائف المجمعة بمفردها وإرجاع قيمة واحدة ناتجة. ثانيًا، يتم استخدام الوظائف التجميعية مع جملة SQL GROUP BY، أي التجميع حسب الحقول (الأعمدة) للحصول على القيم الناتجة في كل مجموعة. دعونا نفكر أولاً في حالات استخدام الوظائف التجميعية دون التجميع.

دالة SQL SUM

ترجع الدالة SQL SUM مجموع القيم في عمود جدول قاعدة البيانات. ولا يمكن تطبيقه إلا على الأعمدة التي تكون قيمها أرقامًا. استعلامات SQLللحصول على المبلغ الناتج يبدأ مثل هذا:

حدد المجموع (COLUMN_NAME) ...

هذا التعبير متبوع بـ FROM (TABLE_NAME)، ومن ثم يمكن تحديد شرط باستخدام جملة WHERE. بالإضافة إلى ذلك، يمكن أن يسبق اسم العمود DISTINCT، مما يعني أنه سيتم حساب القيم الفريدة فقط. بشكل افتراضي، يتم أخذ جميع القيم في الاعتبار (لهذا يمكنك تحديد ليس DISTINCT، ولكن ALL، ولكن كلمة ALL غير مطلوبة).

إذا كنت تريد تشغيل استعلامات قاعدة البيانات من هذا الدرس على MS SQL Server، ولكن نظام إدارة قواعد البيانات هذا غير مثبت على جهاز الكمبيوتر الخاص بك، فيمكنك تثبيته باستخدام الإرشادات الموجودة على هذا الرابط .

أولاً سنعمل مع قاعدة بيانات الشركة - Company1. البرنامج النصي لإنشاء قاعدة البيانات هذه وجداولها وملء الجداول بالبيانات موجود في الملف على هذا الرابط .

مثال 1.توجد قاعدة بيانات للشركة تحتوي على بيانات حول أقسامها وموظفيها. يحتوي جدول الموظفين أيضًا على عمود يحتوي على بيانات حول رواتب الموظفين. يبدو التحديد من الجدول كما يلي (لتكبير الصورة، انقر عليها بزر الفأرة الأيسر):

للحصول على مجموع جميع الرواتب، نستخدم الاستعلام التالي (على MS SQL Server - مع البناء السابق USE Company1؛):

حدد المبلغ (الراتب) من الموظفين

سيرجع هذا الاستعلام القيمة 287664.63.

و الأن . في التدريبات، بدأنا بالفعل في تعقيد المهام، مما يجعلها أقرب إلى تلك التي تمت مواجهتها في الممارسة العملية.

وظيفة SQL مين

تعمل وظيفة SQL MIN أيضًا على الأعمدة التي تكون قيمها أرقامًا وترجع الحد الأدنى من جميع القيم الموجودة في العمود. تحتوي هذه الدالة على بناء جملة مشابه لتلك الخاصة بالدالة SUM.

مثال 3.قاعدة البيانات والجدول هي نفسها كما في المثال 1.

بحاجة إلى معرفة الحد الأدنى أجورموظفو القسم برقم 42. للقيام بذلك، اكتب الاستعلام التالي (على MS SQL Server - مع البناء السابق USE Company1؛):

سيرجع الاستعلام القيمة 10505.90.

ومره اخرى تمرين ل قرار مستقل . في هذا التمرين وبعض التمارين الأخرى، لن تحتاج إلى جدول Staff (الموظفون) فحسب، بل ستحتاج أيضًا إلى جدول Org الذي يحتوي على بيانات حول أقسام الشركة:


مثال 4.يتم إضافة جدول المؤسسة إلى جدول الموظفين، حيث يحتوي على بيانات حول أقسام الشركة. اطبع الحد الأدنى لعدد سنوات العمل لموظف واحد في قسم يقع في بوسطن.

وظيفة SQL ماكس

تعمل وظيفة SQL MAX بشكل مشابه ولها بناء جملة مماثل، يتم استخدامه عندما تحتاج إلى تحديد الحد الأقصى للقيمة بين كافة القيم في العمود.

مثال 5.

نحن بحاجة لمعرفة الحد الأقصى لراتب الموظفين في القسم رقم 42. للقيام بذلك، اكتب الاستعلام التالي (على MS SQL Server - مع البادئة USE Company1؛):

سيرجع الاستعلام القيمة 18352.80

حان الوقت تمارين للحل المستقل.

مثال 6.نحن نعمل مرة أخرى مع جدولين - طاقم العمل والمؤسسة. عرض اسم القسم والحد الأقصى لقيمة العمولة التي يتقاضاها الموظف الواحد في القسم التابع لمجموعة الأقسام (القسم) الشرقية. يستخدم JOIN (الانضمام إلى الجداول) .

وظيفة SQL AVG

ما ورد بخصوص بناء الجملة للوظائف السابقة الموضحة ينطبق أيضًا على وظيفة SQL AVG. ترجع هذه الدالة متوسط ​​جميع القيم في العمود.

مثال 7.قاعدة البيانات والجدول هي نفسها كما في الأمثلة السابقة.

لنفترض أنك تريد معرفة متوسط ​​مدة خدمة الموظفين في القسم رقم 42. للقيام بذلك، اكتب الاستعلام التالي (على MS SQL Server - مع البناء السابق USE Company1؛):

وستكون النتيجة 6.33

مثال 8.نحن نعمل مع طاولة واحدة - الموظفين. عرض متوسط ​​راتب الموظفين الذين لديهم خبرة من 4 إلى 6 سنوات.

وظيفة SQL COUNT

ترجع الدالة SQL COUNT عدد السجلات في جدول قاعدة البيانات. إذا قمت بتحديد SELECT COUNT(COLUMN_NAME) ... في الاستعلام، فستكون النتيجة عدد السجلات دون مراعاة تلك السجلات التي تكون قيمة العمود فيها NULL (غير محددة). إذا استخدمت علامة النجمة كوسيطة وبدأت استعلام SELECT COUNT(*) ...، فستكون النتيجة هي عدد كافة السجلات (الصفوف) في الجدول.

مثال 9.قاعدة البيانات والجدول هي نفسها كما في الأمثلة السابقة.

تريد معرفة عدد جميع الموظفين الذين يتلقون العمولات. سيتم إرجاع عدد الموظفين الذين ليست قيم عمود الاتصال الخاصة بهم فارغة عن طريق الاستعلام التالي (على MS SQL Server - مع البادئة USE Company1؛):

حدد العد (Comm) من الموظفين

ستكون النتيجة 11.

مثال 10.قاعدة البيانات والجدول هي نفسها كما في الأمثلة السابقة.

إذا كنت ترغب في معرفة العدد الإجمالي للسجلات في الجدول، فاستخدم استعلامًا بعلامة النجمة كوسيطة لوظيفة COUNT (على MS SQL Server - مع البناء السابق USE Company1؛):

اختر عدد (*) من الموظفين

ستكون النتيجة 17

في اليوم التالي تمرين من أجل حل مستقلسوف تحتاج إلى استخدام استعلام فرعي.

مثال 11.نحن نعمل مع طاولة واحدة - الموظفين. عرض عدد العاملين في قسم التخطيط (السهول).

تجميع الوظائف باستخدام SQL GROUP BY

الآن دعونا نلقي نظرة على استخدام الوظائف المجمعة مع عبارة SQL GROUP BY. يتم استخدام عبارة SQL GROUP BY لتجميع قيم النتائج حسب الأعمدة في جدول قاعدة البيانات. الموقع لديه درس مخصص بشكل منفصل لهذا المشغل .

سنعمل مع قاعدة بيانات "Ads Portal 1". البرنامج النصي لإنشاء قاعدة البيانات هذه وجدولها وملء جدول البيانات موجود في الملف على هذا الرابط .

مثال 12.لذلك، هناك قاعدة بيانات لبوابة الإعلان. يحتوي على جدول إعلانات يحتوي على بيانات حول الإعلانات المقدمة لهذا الأسبوع. يحتوي عمود الفئة على بيانات حول فئات الإعلانات الكبيرة (على سبيل المثال، العقارات)، ويحتوي عمود الأجزاء على بيانات حول الأجزاء الأصغر المضمنة في الفئات (على سبيل المثال، أجزاء الشقق والبيوت الصيفية هي أجزاء من فئة العقارات). يحتوي عمود الوحدات على بيانات عن عدد الإعلانات المقدمة، ويحتوي عمود الأموال على بيانات عن مقدار الأموال المستلمة مقابل تقديم الإعلانات.

فئةجزءالوحداتمال
ينقلسيارات110 17600
العقاراتشقق سكنية89 18690
العقاراتمنازل ريفية57 11970
ينقلدراجات نارية131 20960
مواد بناءالمجالس68 7140
الهندسة الكهربائيةأجهزة التلفاز127 8255
الهندسة الكهربائيةثلاجات137 8905
مواد بناءريجيس112 11760
فراغكتب96 6240
العقاراتفي البيت47 9870
فراغموسيقى117 7605
فراغألعاب41 2665

باستخدام عبارة SQL GROUP BY، ابحث عن مبلغ المال الذي تم كسبه عن طريق نشر الإعلانات في كل فئة. نكتب الاستعلام التالي (على MS SQL Server - مع البناء السابق USE adportal1؛):

حدد الفئة، المبلغ (المال) كأموال من مجموعة الإعلانات حسب الفئة

مثال 13.قاعدة البيانات والجدول هي نفسها كما في المثال السابق.

باستخدام عبارة SQL GROUP BY، اكتشف أي جزء من كل فئة يحتوي على أكبر عدد من القوائم. نكتب الاستعلام التالي (على MS SQL Server - مع البناء السابق USE adportal1؛):

حدد الفئة، الجزء، الحد الأقصى (الوحدات) كحد أقصى من مجموعة الإعلانات حسب الفئة

وستكون النتيجة الجدول التالي:

ويمكن الحصول على القيم الإجمالية والفردية في جدول واحد دمج نتائج الاستعلام باستخدام عامل التشغيل UNION .

قواعد البيانات العلائقية ولغة SQL




قمة