جمع SQL با شرط. توابع جمع SQL - SUM، MIN، MAX، AVG، COUNT. پارامترها یا آرگومان ها

چگونه می توانم از تعداد مدل های رایانه شخصی تولید شده توسط یک تامین کننده خاص مطلع شوم؟ چگونه می توان میانگین قیمت کامپیوترهایی را که دارای همان قیمت هستند تعیین کرد مشخصات فنی? این و بسیاری از سوالات دیگر مربوط به برخی از اطلاعات آماری را می توان با استفاده از پاسخ داد توابع نهایی (جمع). استاندارد توابع کلی زیر را ارائه می دهد:

همه این توابع یک مقدار واحد را برمی‌گردانند. در همان زمان، توابع COUNT، MINو حداکثرقابل اجرا برای هر نوع داده، در حالی که جمعو AVGفقط برای فیلدهای عددی استفاده می شود. تفاوت بین عملکرد شمردن(*)و شمردن(<имя поля>) این است که مورد دوم هنگام محاسبه مقادیر NULL را در نظر نمی گیرد.

مثال. حداقل و حداکثر قیمت را برای رایانه های شخصی بیابید:

مثال. تعداد رایانه های موجود تولید شده توسط سازنده A را بیابید:

مثال. اگر به تعداد مدل های مختلف تولید شده توسط سازنده A علاقه مند باشیم، می توان پرس و جو را به صورت زیر فرموله کرد (با استفاده از این واقعیت که در جدول Product هر مدل یک بار ثبت می شود):

مثال. تعداد مدل های مختلف موجود تولید شده توسط سازنده A را بیابید. پرس و جو مشابه مورد قبلی است که در آن باید تعداد کل مدل های تولید شده توسط سازنده A را تعیین کنید. در اینجا همچنین باید تعداد مدل های مختلف را در میز رایانه شخصی (یعنی آنهایی که برای فروش در دسترس هستند).

برای اطمینان از اینکه در هنگام بدست آوردن شاخص های آماری فقط از مقادیر منحصر به فرد استفاده می شود آرگومان توابع مجموعمی تواند به کار رود پارامتر DISTINCT. یکی دیگر پارامتر ALLپیش فرض است و فرض می کند که تمام مقادیر برگشتی در ستون شمارش می شوند. اپراتور،

اگر باید تعداد مدل های PC تولید شده را بدست آوریم هر کسسازنده، شما باید استفاده کنید GROUP BY بند، به صورت نحوی دنبال می شود بندهای WHERE.

GROUP BY بند

GROUP BY بندبرای تعریف گروه هایی از خطوط خروجی که می توان روی آنها اعمال کرد استفاده می شود توابع انبوه (COUNT، MIN، MAX، AVG و SUM). اگر این بند وجود ندارد و از توابع انبوه استفاده می شود، تمام ستون ها با نام ذکر شده در انتخاب کنید، باید در آن گنجانده شود توابع جمع، و این توابع برای کل مجموعه سطرهایی که گزاره پرس و جو را برآورده می کنند اعمال خواهند شد. در غیر این صورت، تمام ستون های لیست SELECT شامل نمی شودتوابع در مجموع باید مشخص شود در بند GROUP BY. در نتیجه، تمام ردیف های پرس و جو خروجی به گروه هایی تقسیم می شوند که با ترکیب مقادیر یکسانی در این ستون ها مشخص می شوند. پس از این، توابع جمع برای هر گروه اعمال می شود. لطفاً توجه داشته باشید که برای GROUP BY همه مقادیر NULL برابر در نظر گرفته می شوند، یعنی. هنگام گروه بندی توسط یک فیلد حاوی مقادیر NULL، همه این ردیف ها در یک گروه قرار می گیرند.
اگر اگر یک بند GROUP BY وجود داشته باشد، در بند SELECT بدون توابع جمعی، سپس پرس و جو به سادگی یک ردیف از هر گروه را برمی گرداند. این ویژگی به همراه کلمه کلیدی DISTINCT می تواند برای حذف ردیف های تکراری در مجموعه نتایج استفاده شود.
بیایید به یک مثال ساده نگاه کنیم:
مدل SELECT، COUNT(model) AS Qty_model، AVG(price) AS Avg_price
از کامپیوتر
GROUP BY مدل;

در این درخواست برای هر مدل PC تعداد و میانگین هزینه آنها مشخص می شود. همه ردیف‌هایی که مقدار مدل یکسانی دارند یک گروه را تشکیل می‌دهند و خروجی SELECT تعداد مقادیر و مقادیر میانگین قیمت را برای هر گروه محاسبه می‌کند. نتیجه پرس و جو جدول زیر خواهد بود:
مدل Qty_model میانگین_قیمت
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

اگر SELECT دارای ستون تاریخ باشد، محاسبه این شاخص ها برای هر تاریخ خاص امکان پذیر است. برای انجام این کار، باید تاریخ را به عنوان یک ستون گروه بندی اضافه کنید، و سپس توابع جمع برای هر ترکیبی از مقادیر (مدل-تاریخ) محاسبه می شود.

چندین خاص وجود دارد قوانین برای انجام توابع کل:

  • اگر در نتیجه درخواست هیچ ردیفی دریافت نشد(یا بیش از یک ردیف برای یک گروه معین)، پس هیچ داده منبعی برای محاسبه هیچ یک از توابع جمع وجود ندارد. در این حالت، نتیجه COUNT توابع صفر و نتیجه همه توابع دیگر NULL خواهد بود.
  • بحث و جدلتابع کل خود نمی تواند شامل توابع جمع باشد(تابع از تابع). آن ها در یک پرس و جو، مثلاً به دست آوردن حداکثر مقادیر متوسط ​​غیرممکن است.
  • نتیجه اجرای تابع COUNT می باشد عدد صحیح(INTEGER). سایر توابع انبوه انواع داده های مقادیری را که پردازش می کنند به ارث می برند.
  • اگر تابع SUM نتیجه ای تولید کند که از حداکثر مقدار نوع داده استفاده شده بیشتر باشد، خطا.

بنابراین، اگر درخواست شامل نمی شود GROUP BY بندها، آن توابع جمعگنجانده شده است بند SELECT، روی تمام سطرهای پرس و جو به دست آمده اجرا می شوند. اگر درخواست شامل GROUP BY بند، هر مجموعه ای از ردیف هایی که دارای مقادیر یکسانی از یک ستون یا گروهی از ستون های مشخص شده در هستند GROUP BY بند، یک گروه تشکیل می دهد و توابع جمعبرای هر گروه به طور جداگانه انجام می شود.

داشتن پیشنهاد

اگر بند WHEREسپس یک گزاره برای فیلتر کردن ردیف ها تعریف می کند داشتن پیشنهاداعمال میشود پس از گروه بندیبرای تعریف یک گزاره مشابه که گروه ها را بر اساس مقادیر فیلتر می کند توابع جمع. این بند برای اعتبارسنجی مقادیری که با استفاده از آنها به دست می آیند مورد نیاز است تابع کلنه از ردیف های جداگانه منبع رکورد تعریف شده در بند FROM، و از گروه هایی از این قبیل خطوط. بنابراین، چنین چکی نمی تواند شامل شود بند WHERE.

تابع SUM در زبان SQL، با وجود سادگی، اغلب هنگام کار با پایگاه داده استفاده می شود. با کمک آن، دستیابی به برخی نتایج متوسط ​​یا نهایی بدون استفاده از ابزارهای کمکی DBMS راحت است.

نحو توابع

در اکثریت زبان های SQLنحو مجموع یکسان است - فقط نام فیلد یا برخی عملیات حسابی چندین مورد از آنها به عنوان آرگومان استفاده می شود که جمع مورد نیاز است.

در موارد استثنایی، امکان انتقال یک مقدار خاص به عنوان یک عدد یا متغیر وجود دارد، اما چنین "طرح ها" عملا استفاده نمی شوند، زیرا ارزش زیادی ندارند. در زیر دستور تابع در SQL آمده است:

sum(a) - در اینجا مقداری یا عبارت عددی به عنوان پارامتر a استفاده می شود

شایان ذکر است که قبل از پارامتر می توانید کلمات کلیدی مانند DISTINCT یا ALL را تنظیم کنید که به ترتیب فقط مقادیر منحصر به فرد یا همه را می گیرند.

مثالی از استفاده از SUM در SQL

برای درک کامل نحوه عملکرد تابع، ارزش در نظر گرفتن چندین مثال را دارد. در SQL، SUM می تواند هم به عنوان نتیجه بازگشتی و هم به عنوان یک مقدار میانی، به عنوان مثال، برای آزمایش یک شرط استفاده شود.

برای مورد اول، با در نظر گرفتن اینکه تعداد خریدهای انجام شده می تواند به صورت جمع باشد، گزینه ای را در نظر بگیرید که چه زمانی باید مبلغ فروش هر محصول را برگردانید. برای به دست آوردن نتیجه کافی است کوئری زیر را اجرا کنید:

SELECT محصول، مجموع (خرید مقدار) FROM Sales GroupBy Product;

در پاسخ به این دستوریک لیست منحصر به فرد از محصولات با کل مبلغ خرید برای هر یک از آنها وجود خواهد داشت.

برای مثال دوم، شما باید لیستی از محصولاتی که میزان فروش آنها از مقدار مشخصی بیشتر شده است، به عنوان مثال، 100 دریافت کنید. شما می توانید نتیجه این کار را از چند طریق بدست آورید که بهینه ترین آنها اجرای یک درخواست است:

SELECT Product FROM (انتخاب محصول، جمع (مبلغ خرید) به عنوان مبلغ از فروش) WHERE Sum > 100.

SQL - درس 11. کل توابع، ستون ها و نماهای محاسبه شده

توابع کل را توابع آماری، مجموع یا مجموع نیز می نامند. این توابع مجموعه ای از رشته ها را برای شمارش و برگرداندن یک مقدار واحد پردازش می کنند. تنها پنج عملکرد از این قبیل وجود دارد:
  • تابع AVG() مقدار متوسط ​​یک ستون را برمی گرداند.

  • تابع COUNT() تعداد ردیف های یک ستون را برمی گرداند.

  • تابع MAX() بزرگترین مقدار را در یک ستون برمی گرداند.

  • تابع MIN() کوچکترین مقدار را در ستون برمی گرداند.

  • SUM() تابع مجموع مقادیر ستون را برمی گرداند.

ما قبلاً یکی از آنها - COUNT() - را در درس 8 ملاقات کردیم. حالا بیایید بقیه را ملاقات کنیم. فرض کنید می خواستیم حداقل، حداکثر و میانگین قیمت کتاب های فروشگاه خود را بدانیم. سپس از جدول قیمت ها باید مقادیر حداقل، حداکثر و میانگین را برای ستون قیمت بگیرید. درخواست ساده است:

SELECT MIN(قیمت)، MAX(قیمت)، AVG(قیمت) FROM Prices.

حال می خواهیم بدانیم که چه مقدار کالا توسط تامین کننده «خانه چاپ» (id=2) برای ما آورده شده است. ارائه چنین درخواستی چندان آسان نیست. بیایید در مورد چگونگی نوشتن آن فکر کنیم:

1. ابتدا از جدول Supplies (incoming) شناسه (id_incoming) آن دسته از تحویل‌هایی که توسط تامین‌کننده "Print House" (id=2) انجام شده است را انتخاب کنید:

2. اکنون از جدول Supply Journal (مجله_ورودی) باید کالاها (id_product) و مقدار (مقدار) آنها را که در تحویل های موجود در بند 1 انجام شده است را انتخاب کنید. یعنی پرس و جو از نقطه 1 تو در تو می شود:

3. حال باید قیمت های محصولات یافت شده را که در جدول Prices ذخیره شده اند به جدول به دست آمده اضافه کنیم. یعنی باید با استفاده از ستون id_product به جداول Supply Magazine (magazine_incoming) و Prices بپیوندیم:

4. جدول به دست آمده به وضوح فاقد ستون Amount است ستون محاسبه شده. امکان ایجاد چنین ستون هایی در MySQL فراهم شده است. برای این کار فقط باید در کوئری نام ستون محاسبه شده و اینکه چه چیزی باید محاسبه کند را مشخص کنید. در مثال ما، چنین ستونی جمع نامیده می شود و حاصل ضرب ستون های مقدار و قیمت را محاسبه می کند. نام ستون جدید با کلمه AS جدا می شود:

SELECT magazine_incoming.id_product, magazine_incoming.quantity, Prices.price, magazine_incoming.quantity*prices.price AS summa FROM magazine_incoming, Prices WHERE magazine_incoming.id_product= Prices.id_product=coming.id_HE_incoming;

5. عالی، تنها کاری که باید انجام دهیم این است که ستون جمع بندی را جمع کنیم و در نهایت بفهمیم که تامین کننده "خانه چاپ" چقدر کالا را برای ما آورده است. سینتکس استفاده از تابع SUM() به صورت زیر است:

SELECT SUM(column_name) FROM table_name.

ما نام ستون - summa را می دانیم، اما نام جدول را نداریم، زیرا نتیجه یک پرس و جو است. چه باید کرد؟ برای چنین مواردی، MySQL دارای Views است. view یک کوئری انتخابی است که یک نام منحصر به فرد داده می شود و می تواند در یک پایگاه داده برای استفاده بعدی ذخیره شود.

سینتکس ایجاد View به شرح زیر است:

ایجاد VIEW view_name به عنوان درخواست.

بیایید درخواست خود را به عنوان یک نمای با نام report_vendor ذخیره کنیم:

CREATE VIEW report_vendor AS SELECT magazine_incoming.id_product, magazine_incoming.quantity, Prices.price, magazine_incoming.quantity*prices.price AS summa from magazine_incoming, Prices WHERE magazine_incoming.id_comitingincoming=SELECT_incoming.id_productincomid=SELECT_incoming. HERE id_vendor=2 )

6. اکنون می توانید از تابع نهایی SUM():

SELECT SUM(summa) FROM report_vendor.

بنابراین ما به نتیجه رسیدیم، اگرچه برای این کار باید از کوئری های تودرتو، اتصالات، ستون های محاسبه شده و نماها استفاده می کردیم. بله، گاهی اوقات برای به دست آوردن نتیجه باید فکر کنید، بدون این نمی توانید به جایی برسید. اما ما دو موضوع بسیار مهم را لمس کردیم - ستون های محاسبه شده و نماها. بیایید در مورد آنها با جزئیات بیشتر صحبت کنیم.

فیلدهای محاسبه شده (ستون ها)

با استفاده از یک مثال، امروز به یک فیلد محاسبه شده ریاضی نگاه کردیم. در اینجا می خواهم اضافه کنم که شما می توانید نه تنها از عملیات ضرب (*)، بلکه از تفریق (-)، جمع (+) و تقسیم (/) استفاده کنید. نحو به شرح زیر است:

SELECT column_name 1, column_name 2, column_name 1 * column_name 2 AS محاسبه_column_name FROM table_name;

نکته دوم کلیدواژه AS است، ما از آن برای تنظیم نام ستون محاسبه شده استفاده کردیم. در واقع، این کلمه کلیدی برای تنظیم نام مستعار برای هر ستون استفاده می شود. چرا این لازم است؟ برای کاهش کد و خوانایی برای مثال، نمای ما می تواند به این صورت باشد:

CREATE VIEW report_vendor AS SELECT A.id_product, A.quantity, B.price, A.quantity*B.price AS summa FROM magazine_incoming AS A, Prices AS B WHERE A.id_product= B.id_product AND id_incoming= (SELECT id_incoming FROM WHERE id_vendor=2);

موافق باشید که این بسیار کوتاه تر و واضح تر است.

نمایندگی

ما قبلاً به نحوی برای ایجاد نماها نگاه کرده ایم. پس از ایجاد نماها، می توان از آنها به همان شیوه جداول استفاده کرد. یعنی کوئری‌ها را علیه آنها اجرا کنید، داده‌ها را فیلتر و مرتب کنید و برخی از نماها را با دیگران ترکیب کنید. از یک طرف، این یک راه بسیار راحت برای ذخیره سازی است که اغلب استفاده می شود پرس و جوهای پیچیده(مانند مثال ما).

اما به یاد داشته باشید که نماها جداول نیستند، یعنی داده ها را ذخیره نمی کنند، بلکه فقط آن ها را از جداول دیگر بازیابی می کنند. از این رو، اولاً، هنگامی که داده های جداول تغییر می کنند، نتایج ارائه نیز تغییر می کند. و ثانیاً هنگامی که درخواستی برای یک view ارسال می شود، داده های مورد نیاز جستجو می شود، یعنی عملکرد DBMS کاهش می یابد. بنابراین، شما نباید از آنها سوء استفاده کنید.

در آن کتاب درسینحوه استفاده را یاد خواهید گرفت تابع SUM V SQL Server(Transact-SQL) با نحو و مثال.

شرح

در SQL Server (Transact-SQL) تابع SUMمقدار کل یک عبارت را برمی گرداند.

نحو

نحو تابع SUM در SQL Server (Transact-SQL) به صورت زیر است:

یا نحو تابع SUM هنگام گروه بندی نتایج بر اساس یک یا چند ستون به صورت زیر است:

پارامترها یا آرگومان ها

express1 , express2 , ... express_n عباراتی هستند که در تابع SUM گنجانده نشده اند و باید در بند GROUP BY در انتهای دستور SQL گنجانده شوند.
aggregate_expression ستون یا عبارتی است که جمع می شود.
جداول - جداولی که می خواهید رکوردها را از آنها دریافت کنید. باید حداقل یک جدول در بند FROM وجود داشته باشد.
شرایط WHERE - اختیاری. اینها شرایطی است که برای رکوردهای انتخاب شده باید رعایت شود.

کاربرد

تابع 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

مثال با یک فیلد

برای درک نحوه استفاده از تابع SUM در SQL Server (Transact-SQL) به چند نمونه تابع SUM Server نگاه می کنیم.

به عنوان مثال، می توانید تعداد کل محصولاتی که تعداد آنها بیشتر از 10 است را دریابید.

در این مثال از تابع SUM، عبارت SUM(quantity) را "مقدار کل" مستعار کرده ایم. هنگام برگرداندن یک مجموعه نتیجه - "تعداد کل" به عنوان نام فیلد ظاهر می شود.

مثالی از استفاده از DISTINCT

می توانید از عملگر DISTINCT در تابع SUM استفاده کنید. به عنوان مثال مورد زیر بیانیه SQLحقوق و دستمزد کل را با مقادیر منحصر به فرد حقوق در جایی که حقوق زیر 29000 دلار در سال است، برمی گرداند.

اگر این دو حقوق 24000 دلار در سال بود، تنها یکی از آن مقادیر در تابع SUM استفاده می شود.

مثال استفاده از فرمول

عبارت موجود در تابع SUM نباید یک فیلد واحد باشد. شما همچنین می توانید از فرمول استفاده کنید. به عنوان مثال، می توانید کل کمیسیون را محاسبه کنید.

Transact-SQL

SELECT SUM(فروش * 0.03) AS "Total Commission" FROM orders.

SELECT SUM (فروش * 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 اجرا کنید، اما این DBMS روی رایانه شما نصب نیست، می توانید آن را با استفاده از دستورالعمل های این لینک نصب کنید. .

ابتدا با پایگاه داده شرکت - Company1 کار خواهیم کرد. اسکریپت ایجاد این پایگاه داده، جداول آن و پرکردن جداول با داده در فایل این لینک موجود است .

مثال 1.یک پایگاه داده شرکت با داده های مربوط به بخش ها و کارکنان آن وجود دارد. جدول کارکنان همچنین دارای یک ستون با داده های مربوط به حقوق کارمندان است. انتخاب از جدول به این صورت است (برای بزرگنمایی تصویر، با دکمه سمت چپ ماوس روی آن کلیک کنید):

برای به دست آوردن مجموع همه حقوق، از پرس و جو زیر استفاده می کنیم (در MS SQL Server - با ساخت قبلی USE company1;):

جمع (حقوق) را از کارکنان انتخاب کنید

این کوئری مقدار 287664.63 را برمی گرداند.

و حالا در تمرینات ما در حال حاضر شروع به پیچیده کردن وظایف می کنیم و آنها را به مواردی که در عمل با آنها مواجه می شویم نزدیک می کنیم.

تابع SQL MIN

تابع SQL MIN همچنین روی ستون هایی که مقادیر آنها اعداد است عمل می کند و حداقل تمام مقادیر موجود در ستون را برمی گرداند. این تابع دارای نحوی شبیه به تابع SUM است.

مثال 3.پایگاه داده و جدول مانند مثال 1 هستند.

نیاز به دانستن حداقل ها دستمزدکارمندان بخش با شماره 42. برای انجام این کار، عبارت زیر را بنویسید (در MS SQL Server - با ساخت و ساز قبلی USE company1;):

پرس و جو مقدار 10505.90 را برمی گرداند.

و دوباره ورزش برای تصمیم مستقل . در این و برخی تمرین‌های دیگر، نه تنها به جدول کارکنان، بلکه به جدول سازمان نیز نیاز خواهید داشت که حاوی داده‌های مربوط به بخش‌های شرکت است:


مثال 4.جدول Org به جدول Staff اضافه می شود که حاوی اطلاعات مربوط به بخش های شرکت است. حداقل تعداد سالهای کار توسط یک کارمند در بخش واقع در بوستون را چاپ کنید.

تابع SQL MAX

تابع SQL MAX به طور مشابه کار می کند و دارای یک نحو مشابه است که زمانی استفاده می شود که شما نیاز به تعیین حداکثر مقدار در بین تمام مقادیر در یک ستون دارید.

مثال 5.

ما باید حداکثر حقوق کارمندان در بخش شماره 42 را دریابیم. برای انجام این کار، عبارت زیر را بنویسید (در MS SQL Server - با پیشوند USE company1;):

پرس و جو مقدار 18352.80 را برمی گرداند

وقتشه تمرین برای حل مستقل.

مثال 6.ما دوباره با دو جدول کار می کنیم - Staff و Org. نمایش نام بخش و حداکثر ارزش کمیسیون دریافتی توسط یک کارمند در بخش متعلق به گروه بخش (Division) شرقی. استفاده کنید JOIN (پیوستن به جداول) .

تابع SQL AVG

آنچه در مورد نحو برای توابع قبلی توضیح داده شده است برای تابع SQL AVG نیز صادق است. این تابع میانگین تمام مقادیر یک ستون را برمی گرداند.

مثال 7.پایگاه داده و جدول مانند نمونه های قبلی است.

فرض کنید می خواهید میانگین طول خدمت کارمندان در بخش شماره 42 را بدانید. برای این کار، عبارت زیر را بنویسید (در MS SQL Server - با ساخت و ساز قبلی USE company1؛):

نتیجه 6.33 خواهد بود

مثال 8.ما با یک میز کار می کنیم - کارکنان. نمایش میانگین حقوق کارمندان با 4 تا 6 سال سابقه.

تابع COUNT SQL

تابع SQL COUNT تعداد رکوردهای جدول پایگاه داده را برمی گرداند. اگر SELECT COUNT(COLUMN_NAME) ... را در جستار مشخص کنید، نتیجه تعداد رکوردها بدون در نظر گرفتن آن دسته از رکوردهایی خواهد بود که در آنها مقدار ستون NULL (تعریف نشده) است. اگر از یک ستاره به عنوان آرگومان استفاده کنید و یک جستجوی SELECT COUNT(*) ... را شروع کنید، نتیجه تعداد تمام رکوردها (ردیف) جدول خواهد بود.

مثال 9.پایگاه داده و جدول مانند نمونه های قبلی است.

شما می خواهید تعداد کارمندانی که کمیسیون دریافت می کنند را بدانید. تعداد کارمندانی که مقادیر ستون Comm آنها NULL نیست با پرس و جوی زیر برگردانده می شود (در MS SQL Server - با پیشوند USE company1;):

تعداد (Comm) FROM Staff را انتخاب کنید

نتیجه 11 خواهد بود.

مثال 10.پایگاه داده و جدول مانند نمونه های قبلی است.

اگر می خواهید تعداد کل رکوردهای جدول را بیابید، از یک پرس و جو با یک ستاره به عنوان آرگومان برای تابع COUNT استفاده کنید (در MS SQL Server - با ساخت قبلی USE company1;):

تعداد (*) را از کارکنان انتخاب کنید

نتیجه 17 خواهد بود.

در بعدی تمرین برای حل مستقلباید از یک پرس و جو استفاده کنید.

مثال 11.ما با یک میز کار می کنیم - کارکنان. نمایش تعداد کارکنان بخش برنامه ریزی (Plains).

توابع جمع با SQL GROUP BY

حال بیایید به استفاده از توابع جمع همراه با دستور SQL GROUP BY نگاه کنیم. دستور SQL GROUP BY برای گروه بندی مقادیر نتایج بر اساس ستون ها در جدول پایگاه داده استفاده می شود. وب سایت دارد یک درس به طور جداگانه به این اپراتور اختصاص داده شده است .

ما با پایگاه داده "Ads Portal 1" کار خواهیم کرد. اسکریپت ایجاد این پایگاه داده، جدول آن و پر کردن جدول داده ها در فایل این لینک موجود است .

مثال 12.بنابراین، یک پایگاه داده از پورتال تبلیغات وجود دارد. دارای یک جدول تبلیغات است که حاوی اطلاعات مربوط به تبلیغات ارسال شده برای هفته است. ستون Category شامل داده‌های مربوط به دسته‌های تبلیغات بزرگ (به عنوان مثال، املاک و مستغلات)، و ستون قطعات حاوی داده‌هایی درباره بخش‌های کوچک‌تر موجود در دسته‌ها است (به عنوان مثال، بخش‌های آپارتمان‌ها و خانه‌های تابستانی بخشی از دسته املاک هستند). ستون واحدها شامل اطلاعات تعداد آگهی های ارسال شده و ستون پول حاوی اطلاعاتی در مورد میزان پول دریافتی برای ارسال آگهی است.

دسته بندیقسمتواحدهاپول
حمل و نقلماشین ها110 17600
مشاور املاکآپارتمان ها89 18690
مشاور املاکداچا57 11970
حمل و نقلموتور سیکلت131 20960
مصالح و مواد ساختمانیتابلوها68 7140
مهندسی برقتلویزیون ها127 8255
مهندسی برقیخچال و فریزر137 8905
مصالح و مواد ساختمانیRegips112 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




بالا