نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی

زبان SQL. تشکیل پرس و جو در پایگاه داده

ویژگی های تابع COUNT.

نام پارامتر معنی
موضوع مقاله: ویژگی های تابع COUNT.
دسته (رده موضوعی) تجارت

توابع مجموع

خلاصه درخواست های خواندن

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

برای خلاصه کردن اطلاعات موجود در پایگاه داده، SQL توابع انبوه (آماری) را فراهم می کند.

انباشته‌ها گروه‌هایی از ردیف‌ها هستند، بنابراین، توابع تجمعی، توابعی هستند که آرگومان‌های آن‌ها گروه‌هایی از ردیف‌ها هستند.

انباشته ها می توانند تمام ردیف های جدول یا گروه هایی از ردیف های ایجاد شده توسط بند GROUP BY را نشان دهند (مورد بحث در بخش 13.7.2).

تابع مجموع به عنوان آرگومان عبارتی حاوی، توسط را دریافت می کند حداقل، یک ستون از جدول، و یک مقدار را به عنوان نتیجه برمی گرداند. Tᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ، توابع انبوه به شما اجازه می دهند تا عملیاتی را بر روی مقادیر کل ستون یک جدول یا چندین جدول به طور همزمان انجام دهید.

پنج تابع استاندارد در SQL وجود دارد: SUM، AVG، MIN، MAX، COUNT.

جمع (<выражение>) مجموع تمام مقادیر یک عبارت را محاسبه می کند.

AVG (<выражение>) میانگین تمام مقادیر موجود در عبارت را محاسبه می کند.

MIN (<выражение>) کوچکترین را در بین تمام مقادیر در عبارت پیدا می کند.

حداکثر (<выражение>) بزرگترین را در بین تمام مقادیر در عبارت پیدا می کند.

شمردن (<выражение>) تعداد مقادیر موجود در عبارت را می شمارد.

رایج ترین عبارت نام ستون جدول است.

تابع COUNT (*) تعداد ردیف ها را می شمارد (ᴛ.ᴇ. همچنین NULL را می شمارد).

COUNT (متمایز<выражение>) تعداد مقادیر متمایز را در یک عبارت می شمارد.

یادداشت 1.در مایکروسافت اکسس، ساختار COUNT (متمایز<выражение>) کار نمی کند!!!این مشکل با استفاده از یک پرس و جو در عبارت FROM حل می شود.

محدودیت هایبرای استفاده از توابع جمع:

توابع جمع را نمی توان در یک عبارت WHERE استفاده کرد (برای یک ردیف کار می کند، نه یک تجمع).

توابع انبوه را نمی توان درون یکدیگر قرار داد (اگر بسیار مهم است، می توانید از پرس و جوهای تودرتو استفاده کنید).

توابع مجموع و نام ستون های معمولی را نمی توان به طور همزمان در بند SELECT استفاده کرد (مگر اینکه GROUP BY در این ستون ها مشخص شده باشد)

تبصره 2.توصیه می شود ستون هایی را با نام مستعار برگردانید که از توابع جمع در عبارت SELECT استفاده می کنند.

مثال 29... هزینه کل تمام تماس ها را محاسبه کنید.

انتخاب جمع (STOIM)

از VYZOVY

مثال 30... میانگین سنی مخاطبین را محاسبه کنید.

SELECT AVG (VOZRAST)

از KONTAKTY

مثال 31... حداقل و حداکثر مدت تماس های خروجی را محاسبه کنید.

SELECT MIN (DLIT)، MAX (DLIT)

از VYZOVY V، TIPY_VYZ T

WHERE (V.TIP_ID = T.ID) و (T.NAZV = "خروجی")

مثال 32... نمایش تاریخ و زمان اولین تماس

SELECT MIN (VREMYA)

از VYZOVY

مثال 33... تعداد مخاطبین بالای 30 سال را محاسبه کنید.

SELECT COUNT (ID)

از KONTAKTY

WHERE VOZRAST> 30

انتخاب تعداد (*)

از KONTAKTY

WHERE VOZRAST> 30

مثال 34... تعداد آهنگ های زنگی که قبلاً به یک مخاطب اختصاص داده شده است را محاسبه کنید.

در ACCESS کار نمی کند:

SELECT COUNT (مشخص MEL_ID)

از KONTAKTY

در ACCESS کار می کند:

SELECT COUNT (MEL_ID)

FROM (انتخاب MEL_ID متمایز

از KONTAKTY)

ویژگی های تابع COUNT. - مفهوم و انواع طبقه بندی و ویژگی های دسته "ویژگی های تابع COUNT." 2017، 2018.

  • - کاربرگ هفت میلیارد و شمارش الف

    خواندن بیشتر مراجع DeGolyer E., Vance H., Bibliography of the Petroleum Industry, Bull. 83، الف و. M. College of Texas, College Station, Texas, 725 p., 1944. Dunbar C. R., Dunbar L., A Selected of Periodicals, Serials, and Books Dealing with Petroleum and Allied Subjects, Department of Conservation, New Orleans, Louisiana, 218، ص، 1939. شرکت انتشارات زمین شناسی اقتصادی، اوربانا، ایلینوی، ...


  • - سیستم آموزش نفت در کشور ما

    کشور ما همواره توجه زیادی به آموزش مهندسان نفت داشته است. بلافاصله پس از انقلاب اکتبر در سپتامبر 1918، دولت شوروی فرمانی را در مورد سازماندهی آکادمی معدن مسکو منتشر کرد. بعداً در سال 1930 یک مؤسسه نفت جداگانه از این آکادمی جدا شد و ما این مؤسسه را دانشگاه دولتی گوبکین روسیه از نفت و گاز می نامیم. از آن زمان، سطح آموزش نفت چندین برابر رشد کرده است. در حال حاضر سیستمنفت ....


  • - آموزش نفت در کشور ما

    دانشگاه فنی "گروه زبان های خارجیکتاب درسی زبان انگلیسی در مورد مشخصات گسترده دانشگاه نفت Ufa 2012 کتاب درسی شامل 16 درس است. هر درس شامل واژگان فعال، واژگان، گرامر، ....


  • - در کشور ما

    تاریخچه آموزش مهندسی نفت در کشور ما از تاریخ تاسیس و توسعه صنایع نفت و گاز آن جدایی ناپذیر است. در روسیه تزاری صنعت نفت تقریباً منحصراً در قفقاز متمرکز بود. در 2 ژوئیه 1918 رئیس دولت فرمان ملی شدن صنعت نفت را امضا کرد (آنها در روسیه مواد خام گازی تولید نمی کردند و قبل از انقلاب هیچ صنعت گازی در آنجا وجود نداشت). اما در دوران سخت مدنی ....


  • - حسابداری مدیریت

    1. مدل. 2. الزامات برای اطلاعات. 3. جمع آوری اطلاعات. 4. فعال سازی مدل و تفسیر نتایج. 5. ارائه نتایج مدل. G = D-W Gpr = D (V) pr - Zpr - سود مواد غذایی MD - درآمد نهایی. MD = B - متغیرها، (B - درآمد، Z-costs) مدل ....


  • - تمرین 2. تصور کنید که به عنوان حسابدار در یک شرکت بزرگ کار می کنید. به سوالات زیر پاسخ دهید.

    1. آیا در پایان سال مالی حساب ها را جمع می کنید؟ 2. فعالیت های معمول شما در پایان سال مالی چیست؟ 3. چه زمانی صورت مالی تهیه می کنید؟ 4. چرا باید دارایی های شما بیشتر از بدهی ها باشد؟ 5. آیا بخش حسابداری روی مالیات کار می کند؟ 6. چیست؟ تفاوت بینحقوق ناخالص و حقوق خالص شما؟ 7. آیا تفاوت بین حقوق ناخالص و حقوق خالص در این کشور زیاد است؟ این تفاوت به چه چیزی بستگی دارد؟ تمرین 3. آرایش ....


  • - COUNT تابع

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


  • - شمارشگر گایگر

    هزینه: 300 کم است دستگاه مفیدنه تنها مقدار راد را در یک فرد نشان می دهد، بلکه تابش پس زمینه محیط را نیز اندازه گیری می کند. این می تواند مفید باشد زمانی که شما نیاز دارید که دریابید که آیا دهانه بزرگ درخشان پیش رو خطرناک است یا خیر. وزن: 5 پوند ...


  • - شمارش معکوس

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


  • بخش‌های فرعی زیر سایر بندهای SELECT را که می‌توان در پرس‌و‌جوها استفاده کرد، و همچنین توابع جمع‌آوری و مجموعه دستورات را توضیح می‌دهد. بگذارید به شما یادآوری کنم این لحظهما استفاده از بند WHERE را پوشش داده‌ایم و در این مقاله به بندهای GROUP BY، ORDER BY و HAVING نگاه می‌کنیم و نمونه‌هایی از نحوه استفاده از این بندها در ارتباط با توابع جمعی که در Transact پشتیبانی می‌شوند را ارائه می‌کنیم. -SQL.

    GROUP BY بند

    جمله دسته بندی بر اساسمجموعه ردیف انتخاب شده را گروه بندی می کند تا مجموعه ای از ردیف های خلاصه را بر اساس مقادیر یک یا چند ستون یا عبارت بدست آورد. یک مورد استفاده ساده برای بند GROUP BY در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. SELECT Job FROM Works_On GROUP BY Job.

    در این مثال، موقعیت های کارمند نمونه گیری و گروه بندی می شوند.

    در مثال بالا، عبارت GROUP BY ایجاد می کند یک گروه جداگانهبرای تمام مقادیر ممکن (از جمله NULL) ستون Job.

    استفاده از ستون ها در بند GROUP BY باید شرایط خاصی را داشته باشد. به طور خاص، هر ستون در لیست انتخابی پرس و جو باید در عبارت GROUP BY نیز ظاهر شود. این الزام برای ثابت ها و ستون هایی که بخشی از یک تابع جمع هستند اعمال نمی شود. (توابع مجموع در زیر بخش بعدی مورد بحث قرار می گیرند.) این منطقی است زیرا فقط ستون‌های عبارت GROUP BY یک مقدار برای هر گروه تضمین می‌شود.

    یک جدول را می توان با هر ترکیبی از ستون های آن گروه بندی کرد. مثال زیر گروه بندی ردیف ها در جدول Works_on را با دو ستون نشان می دهد:

    از SampleDb استفاده کنید. SELECT ProjectNumber, Job FROM Works_On GROUP BY ProjectNumber, Job;

    نتیجه این پرس و جو:

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

    توابع مجموع

    از توابع جمع برای بدست آوردن مقادیر مجموع استفاده می شود. تمام توابع کل را می توان به دسته های زیر تقسیم کرد:

      توابع جمع معمولی؛

      توابع جمع آماری;

      توابع جمعی تعریف شده توسط کاربر.

      توابع مجموع تحلیلی

    در اینجا ما به سه نوع اول توابع جمع نگاه خواهیم کرد.

    توابع جمع منظم

    Transact-SQL از شش تابع جمع زیر پشتیبانی می کند: MIN, حداکثر, جمع, AVG, شمردن, COUNT_BIG.

    همه توابع انبوه محاسبات را بر روی یک آرگومان انجام می دهند که می تواند یک ستون یا یک عبارت باشد. (تنها استثنا شکل دوم دو تابع، COUNT و COUNT_BIG، به ترتیب COUNT (*) و COUNT_BIG (*) است.) هر تابع جمعی به یک مقدار ثابت ارزیابی می شود که در یک ستون نتیجه جداگانه ظاهر می شود.

    توابع انبوه در لیست ستونی یک عبارت SELECT مشخص می شوند که می تواند شامل یک عبارت GROUP BY نیز باشد. اگر دستور SELECT شامل یک بند GROUP BY نباشد و لیست ستون انتخاب حداقل یک تابع تجمیع داشته باشد، در این صورت نباید دارای ستون های ساده باشد (به غیر از ستون هایی که به عنوان آرگومان های تابع جمع استفاده می شوند). بنابراین، کد موجود در مثال زیر نادرست است:

    از SampleDb استفاده کنید. نام خانوادگی، MIN (Id) FROM Employee را انتخاب کنید.

    در اینجا، ستون LastName جدول Employee نباید در لیست ستون انتخاب باشد زیرا آرگومان تابع جمع نیست. از سوی دیگر، یک لیست انتخابی از ستون‌ها می‌تواند حاوی نام ستون‌هایی باشد که آرگومان‌هایی برای تابع انبوه نیستند، اگر آن ستون‌ها به عنوان آرگومان‌های عبارت GROUP BY استفاده شوند.

    یک آرگومان تابع مجموع را می توان با یکی از دو کلمه کلیدی ممکن قبل از آن بیان کرد:

    همه

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

    متمایز

    فقط نشان می دهد ارزش های منحصر به فردستون

    توابع جمع MIN و MAX

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

    از SampleDb استفاده کنید. - 2581 SELECT MIN (Id) AS "Minimum ID value" FROM Employee را برمی گرداند.

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

    نتیجه اجرای پرس و جو:

    استفاده از تابع تجمع MAX در مثال زیر نشان داده شده است:

    توابع MIN و MAX همچنین می توانند رشته ها و تاریخ ها را به عنوان آرگومان بپذیرند. در مورد آرگومان رشته ای، مقادیر با استفاده از ترتیب مرتب سازی واقعی مقایسه می شوند. برای همه آرگومان‌های داده موقت نوع تاریخ، پایین‌ترین مقدار ستون اولین تاریخ و بالاترین مقدار آخرین تاریخ است.

    با توابع MIN و MAX می توانید استفاده کنید کلمه کلیدیمتمایز. تمام مقادیر NULL از ستون های آرگومان خود قبل از استفاده از توابع جمع MIN و MAX حذف می شوند.

    تابع مجموع SUM

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

    از SampleDb استفاده کنید. SELECT SUM (Budget) "Total Budget" FROM Project.

    این مثال کل بودجه را برای همه پروژه ها محاسبه می کند. نتیجه اجرای پرس و جو:

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

    از SampleDb استفاده کنید. SELECT SUM (Budget) "Total Budget" FROM Project GROUP BY ();

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

    عملکرد جمع AVG

    تجمیع عملکرد AVGمیانگین حسابی تمام مقادیر یک ستون را برمی گرداند. آرگومان این تابع تجمیع همیشه باید از نوع داده عددی باشد. تمام مقادیر NULL قبل از اعمال تابع AVG از آرگومان حذف می شوند.

    استفاده از تابع AVG aggregate در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. - بازگشت 133833 SELECT AVG (Budget) "Average Budget for a project" FROM Project;

    اینجاست که میانگین حسابی بودجه برای همه بودجه ها محاسبه می شود.

    توابع COUNT و COUNT_BIG را جمع کنید

    تجمیع COUNT تابعدارای دو شکل مختلف:

    COUNT (col_name) COUNT (*)

    شکل اول تابع تعداد مقادیر موجود در ستون col_name را می شمارد. اگر پرس و جو از کلمه کلیدی DISTINCT استفاده کند، تمام مقادیر ستون تکراری قبل از استفاده از تابع COUNT حذف می شوند. این فرم از تابع COUNT هنگام شمارش تعداد مقادیر ستون، مقادیر NULL را در نظر نمی گیرد.

    استفاده از اولین شکل تابع COUNT در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. SELECT ProjectNumber، COUNT (DiSTINCT Job) "Jobs in Project" FROM Works_on GROUP BY ProjectNumber.

    اینجاست که تعداد موقعیت های مختلف برای هر پروژه شمارش می شود. نتیجه این پرس و جو:

    همانطور که از پرس و جو در مثال مشاهده می کنید، مقادیر NULL توسط تابع COUNT در نظر گرفته نشده است. (مجموع تمام مقادیر در ستون job 7 است نه 11 آنطور که باید باشد.)

    شکل دوم تابع COUNT، یعنی. تابع COUNT (*) تعداد ردیف های جدول را می شمارد. و اگر دستور SELECT یک پرس و جو با تابع COUNT (*) حاوی یک عبارت WHERE با یک شرط باشد، تابع تعداد ردیف های رضایت بخش را برمی گرداند. شرایط مشخص شده... برخلاف نسخه اول تابع COUNT، فرم دوم مقادیر NULL را نادیده نمی گیرد زیرا این تابع بر روی رشته ها عمل می کند نه ستون ها. مثال زیر استفاده از تابع COUNT (*) را نشان می دهد:

    از SampleDb استفاده کنید. شغل را به عنوان "نوع شغل" انتخاب کنید، COUNT (*) "کارگران مورد نیاز" FROM Works_on GROUP BY Job;

    اینجاست که تعداد پست ها در همه پروژه ها محاسبه می شود. نتیجه اجرای پرس و جو:

    COUNT_BIG تابععملکرد مشابه COUNT. تنها تفاوت بین این دو نوع نتیجه ای است که برمی گردانند: COUNT_BIG همیشه مقادیر BIGINT را برمی گرداند، در حالی که COUNT مقادیر INTEGER داده را برمی گرداند.

    توابع جمع آماری

    توابع زیر گروه توابع جمع آماری را تشکیل می دهند:

    VAR

    واریانس آماری همه مقادیر در یک ستون یا عبارت را محاسبه می کند.

    VARP

    واریانس آماری جمعیت همه مقادیر در یک ستون یا عبارت را محاسبه می کند.

    STDEV

    انحراف معیار را محاسبه می کند (که به صورت محاسبه می شود ریشه دوماز واریانس مربوطه) تمام مقادیر ستون یا عبارت.

    STDEVP

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

    توابع جمعی تعریف شده توسط کاربر

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

    بند داشتن

    در یک جمله داشتنشرطی را تعریف می کند که برای گروهی از ردیف ها اعمال می شود. بنابراین، این بند برای گروه‌های ردیف همان معنای عبارت WHERE برای محتویات جدول مربوطه را دارد. نحو داشتن پیشنهاداتبعد:

    شرایط داشتن

    در اینجا پارامتر شرط یک شرط را نشان می دهد و حاوی توابع یا ثابت های مجموع است.

    استفاده از عبارت HAVING در رابطه با تابع جمع COUNT (*) در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. - "p3" را برمی گرداند SELECT ProjectNumber FROM Works_on GROUP BY ProjectNumber HAVING COUNT (*)

    در این مثال، سیستم از عبارت GROUP BY برای گروه بندی تمام سطرها بر اساس مقادیر در ستون ProjectNumber استفاده می کند. سپس تعداد ردیف‌های هر گروه شمارش می‌شود و گروه‌های حاوی کمتر از چهار ردیف (سه یا کمتر) انتخاب می‌شوند.

    همانطور که در مثال زیر نشان داده شده است، عبارت HAVING را می توان بدون توابع انبوه نیز استفاده کرد:

    از SampleDb استفاده کنید. - "مشاور" را برمی گرداند.

    این مثال ردیف های جدول Works_on را بر اساس عنوان شغل گروه بندی می کند و کارهایی را که با حرف "K" شروع نمی شوند حذف می کند.

    بند HAVING را می توان بدون بند GROUP BY نیز استفاده کرد، اگرچه این روش معمول نیست. در این حالت، تمام ردیف های جدول در یک گروه بازگردانده می شوند.

    ترتیب بر اساس بند

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

    ترتیب مرتب سازی در پارامتر col_name مشخص شده است. Col_number یک نشانگر ترتیب مرتب سازی جایگزین است که ستون ها را به ترتیبی که در لیست انتخاب دستور SELECT ظاهر می شوند را مشخص می کند (1 ستون اول، 2 ستون دوم و غیره). پارامتر ASCیک ترتیب صعودی را تعریف می کند و پارامتر DESC- در پایین دست پیش فرض ASC است.

    نام ستون ها در بند ORDER BY لازم نیست در لیست ستون های انتخاب شده باشد. اما این در مورد جستارهایی مانند SELECT DISTINCT صدق نمی کند، زیرا در چنین پرس و جوهایی، نام ستون های مشخص شده در عبارت ORDER BY نیز باید در لیست ستون های انتخابی ظاهر شود. علاوه بر این، این بند نمی تواند شامل نام ستون هایی از جداولی باشد که در عبارت FROM مشخص نشده اند.

    همانطور که از نحو عبارت ORDER BY می بینید، مرتب سازی مجموعه نتایج را می توان در چندین ستون انجام داد. این مرتب سازی در مثال زیر نشان داده شده است:

    این مثال شماره بخش و نام خانوادگی و نام کارمندان را برای کارمندانی که تعداد پرسنل آنها کمتر از 20000 نفر است انتخاب می کند و همچنین بر اساس نام خانوادگی و نام مرتب شده است. نتیجه این پرس و جو:

    ستون ها در بند ORDER BY را می توان نه با نام آنها، بلکه به ترتیب در لیست انتخاب مشخص کرد. بر این اساس، جمله در مثال بالا را می توان به صورت زیر بازنویسی کرد:

    این روش جایگزین برای تعیین ستون ها بر اساس موقعیت آنها به جای نام، در صورتی استفاده می شود که معیار ترتیب شامل یک تابع جمع باشد. (روش دیگر استفاده از نام ستون‌ها است که سپس در عبارت ORDER BY ظاهر می‌شوند.) با این حال، در عبارت ORDER BY، توصیه می‌شود ستون‌ها را به جای اعداد، با نام آن‌ها مشخص کنید تا به‌روزرسانی درخواست آسان‌تر شود. اگر نیاز به اضافه کردن یا حذف ستون ها در لیست انتخاب دارید. تعیین ستون ها در عبارت ORDER BY با شماره آنها در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. شماره پروژه را انتخاب کنید، COUNT (*) "تعداد کارمندان" FROM Works_on GROUP BY ProjectNumber ORDER BY 2 DESC;

    در اینجا، برای هر پروژه، تعداد پروژه و تعداد کارکنان شرکت کننده در آن انتخاب می شود و نتیجه را به ترتیب نزولی بر تعداد کارمندان مرتب می کند.

    Transact-SQL مقادیر NULL را هنگامی که به ترتیب صعودی مرتب می شوند در بالای لیست قرار می دهد و هنگامی که به ترتیب نزولی مرتب می شوند مقادیر NULL را در انتهای لیست قرار می دهد.

    استفاده از ORDER BY Clause برای صفحه بندی نتایج

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

    برای پشتیبانی از ایجاد صفحه سمت سرور، SQL Server 2012 دو عبارت SELECT جدید را معرفی می کند: OFFSET و FETCH. کاربرد این دو جمله در مثال زیر نشان داده شده است. در اینجا، از پایگاه داده AdventureWorks2012 (که می توانید در منبع پیدا کنید)، شناسه کسب و کار، عنوان شغلی و تاریخ تولد همه کارمندان زن را استخراج می کند که بر اساس عنوان شغلی به ترتیب صعودی مرتب شده اند. مجموعه ردیف های حاصل به صفحات 10 خطی تقسیم می شود و صفحه سوم نمایش داده می شود:

    در یک جمله انحرافتعداد خطوط نتیجه را برای پرش در نتیجه نمایش داده شده مشخص می کند. این مقدار پس از مرتب‌سازی ردیف‌ها با عبارت ORDER BY محاسبه می‌شود. در یک جمله واکشی بعدیتعداد ردیف های WHERE و مرتب شده برای بازگشت را مشخص می کند. پارامتر این بند می تواند یک ثابت، یک عبارت یا نتیجه یک پرس و جو دیگر باشد. عبارت FETCH NEXT مشابه بند است اول واکشی.

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

    SELECT Statement and IDENTITY Property

    ویژگی IDENTITYبه شما امکان می دهد مقادیر یک ستون خاص از جدول را در قالب یک شمارنده افزایشی خودکار تعیین کنید. ستون های یک نوع داده عددی مانند TINYINT، SMALLINT، INT و BIGINT می توانند این ویژگی را داشته باشند. برای چنین ستون جدولی، موتور پایگاه داده به طور خودکار مقادیر متوالی را تولید می کند که با مقدار شروع مشخص شده شروع می شود. بنابراین، از ویژگی IDENTITY می توان برای ایجاد موارد بدون ابهام استفاده کرد مقادیر عددیبرای ستون انتخاب شده

    یک جدول فقط می تواند شامل یک ستون با ویژگی IDENTITY باشد. همانطور که در مثال زیر نشان داده شده است، مالک جدول توانایی تعیین مقدار اولیه و افزایش را دارد:

    از SampleDb استفاده کنید. محصول جدول ایجاد کنید (شناسه INT IDENTITY (10000، 1) NOT NULL، نام NVARCHAR (30) NOT NULL، قیمت پول) درج در محصول (نام، قیمت) VALUES ("محصول1"، 10)، ("محصول2"، 15) , ("محصول3"، 8)، ("محصول4"، 15)، ("محصول5"، 40); - 10004 SELECT IDENTITYCOL FROM Product WHERE Name = "Product5"; - مشابه عبارت قبلی SELECT $ هویت از محصول WHERE Name = "Product5";

    این مثال ابتدا یک جدول Product ایجاد می کند که حاوی یک ستون ID با ویژگی IDENTITY است. مقادیر در ستون Id به طور خودکار توسط سیستم ایجاد می شود، از 10000 شروع می شود و برای هر مقدار بعدی در یک مرحله افزایش می یابد: 10000، 10،001، 10،002 و غیره.

    چندین تابع و متغیر سیستم با ویژگی IDENTITY مرتبط هستند. به عنوان مثال، کد مثال استفاده می کند متغیر سیستم $ident... همانطور که از نتایج اجرای این کد می بینید، این متغیر به طور خودکار به ویژگی IDENTITY ارجاع داده می شود. همچنین می توانید به جای آن از عملکرد سیستم استفاده کنید هویت.

    مقدار اولیه و افزایش ستون با ویژگی IDENTITY را می توان با استفاده از توابع پیدا کرد IDENT_SEEDو IDENT_INCRبه ترتیب. این توابع به صورت زیر اعمال می شوند:

    از SampleDb استفاده کنید. SELECT IDENT_SEED ("محصول")، IDENT_INCR ("محصول")

    همانطور که گفته شد، مقادیر IDENTITY به طور خودکار توسط سیستم تنظیم می شود. اما کاربر می تواند به صراحت مقادیر خود را برای رشته های خاص با اختصاص دادن به پارامتر مشخص کند. IDENTITY_INSERTمقدار ON قبل از درج مقدار صریح:

    SET IDENTITY درج نام جدول ON

    از آنجایی که پارامتر IDENTITY_INSERT می تواند برای تنظیم هر مقدار، از جمله مقادیر تکراری، در ستونی با ویژگی IDENTITY استفاده شود، ویژگی IDENTITY معمولاً منحصر به فرد بودن مقادیر ستون را اعمال نمی کند. بنابراین، محدودیت های UNIQUE یا PRIMARY KEY باید برای اعمال منحصر به فرد بودن مقادیر ستون اعمال شود.

    هنگامی که پس از تنظیم IDENTITY_INSERT روی on، مقادیر را در جدول وارد می کنید، سیستم مقدار بعدی را در ستون IDENTITY ایجاد می کند و بالاترین مقدار فعلی را در آن ستون افزایش می دهد.

    عبارت CREATE SEQUENCE

    استفاده از ویژگی IDENTITY چندین اشکال مهم دارد که مهمترین آنها عبارتند از:

      دارایی به جدول مشخص شده محدود می شود.

      مقدار جدید ستون را به هیچ وجه نمی توان به دست آورد، مگر با اعمال آن.

      ویژگی IDENTITY فقط هنگام ایجاد یک ستون قابل تعیین است.

    به این دلایل، SQL Server 2012 دنباله هایی را معرفی می کند که دارای معنایی مشابه با ویژگی IDENTITY هستند، اما بدون معایب ذکر شده قبلی. در این زمینه، یک دنباله به عملکرد یک پایگاه داده اشاره دارد که به شما امکان می دهد مقادیر شمارنده را برای اشیاء مختلف پایگاه داده، مانند ستون ها و متغیرها، مشخص کنید.

    توالی ها با استفاده از دستورالعمل ایجاد می شوند ایجاد دنباله... دستور CREATE SEQUENCE در استاندارد SQL تعریف شده است و توسط سایر سیستم های پایگاه داده رابطه ای مانند IBM DB2 و Oracle پشتیبانی می شود.

    مثال زیر نحوه ایجاد یک دنباله در SQL Server را نشان می دهد:

    از SampleDb استفاده کنید. ایجاد توالی dbo.Sequence1 به عنوان INT START با 1 افزایش در 5 MINVALUE 1 MAXVALUE 256 CYCLE.

    در مثال بالا، مقادیر Sequence1 به‌طور خودکار توسط سیستم تولید می‌شوند و از مقدار 1 شروع می‌شوند و برای هر مقدار متوالی با افزایش 5 برابری می‌شوند. بنابراین، در بند شروعمقدار اولیه نشان داده شده است، و در پیشنهاد افزایشی- گام. (مرحله می تواند مثبت یا منفی باشد.)

    در دو جمله اختیاری بعدی MINVALUEو MAXVALUEحداقل و حداکثر مقدار شی sequence را مشخص می کند. (توجه داشته باشید که MINVALUE باید کمتر یا مساوی با مقدار اولیه باشد و MAXVALUE نمی تواند بزرگتر از حد بالای نوع داده مشخص شده برای دنباله باشد.) در یک جمله چرخهنشان می دهد که وقتی از حداکثر (یا حداقل برای دنباله ای با گام منفی) مقدار فراتر رفت، دنباله از ابتدا تکرار می شود. به‌طور پیش‌فرض، این بند روی NO CYCLE تنظیم می‌شود، به این معنی که تجاوز از حداکثر یا حداقل مقدار توالی یک استثنا را ایجاد می‌کند.

    ویژگی اصلی توالی ها مستقل بودن آنها از جداول است. آنها را می توان با هر شی پایگاه داده مانند ستون های جدول یا متغیرها استفاده کرد. (این ویژگی تأثیر مثبتی بر ذخیره سازی و در نتیجه بر عملکرد دارد. یک دنباله خاص نیازی به ذخیره سازی ندارد، فقط آخرین مقدار آن ذخیره می شود.)

    مقادیر جدید توالی با ایجاد می شود مقدار بعدی برای عباراتکه کاربرد آن در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. - 1 را برمی گرداند SELECT NEXT VALUE FOR dbo.sequence1. - 6 را برمی گرداند (مرحله بعدی) SELECT NEXT VALUE FOR dbo.sequence1.

    می‌توانید از عبارت NEXT VALUE FOR برای اختصاص دادن نتیجه یک دنباله به سلول یا سلول ستونی استفاده کنید. مثال زیر استفاده از این عبارت برای تخصیص نتایج به یک ستون را نشان می دهد:

    از SampleDb استفاده کنید. ایجاد جدول محصول (ID INT NOT NULL، نام NVARCHAR (30) NOT NULL، قیمت پول) درج در مقادیر محصول (ارزش بعدی برای dbo.sequence1، "Product1"، 10); درج در مقادیر محصول (مقدار بعدی برای dbo.sequence1، "Product2"، 15)؛ -...

    مثال بالا ابتدا جدولی به نام Product با چهار ستون ایجاد می کند. در مرحله بعد، دو عبارت INSERT دو ردیف را در این جدول قرار می دهند. دو خانه اول ستون اول 11 و 16 خواهد بود.

    مثال زیر استفاده از نمای کاتالوگ را نشان می دهد sys.sequencesبرای مشاهده مقدار فعلی یک دنباله بدون استفاده از آن:

    به طور معمول، عبارت NEXT VALUE FOR در یک عبارت INSERT برای دستور دادن به سیستم برای درج مقادیر تولید شده استفاده می شود. این عبارت همچنین می تواند به عنوان بخشی از یک پرس و جو چند خطی با استفاده از عبارت OVER استفاده شود.

    برای تغییر ویژگی یک دنباله موجود، اعمال کنید عبارت ALTER SEQUENCE... یکی از مهمترین کاربردهای این عبارت، گزینه RESTART WITH است که توالی مشخص شده را ریست می کند. مثال زیر استفاده از دستور ALTER SEQUENCE را برای بازنشانی تقریباً تمام خصوصیات Sequence1 نشان می دهد:

    از SampleDb استفاده کنید. ALTER SEQUENCE dbo.sequence1 شروع مجدد با 100 افزایش در 50 MINVALUE 50 MAXVALUE 200 NO CYCLE.

    دنباله با استفاده از دستورالعمل حذف می شود دنباله رها کردن.

    عملگرها را تنظیم کنید

    علاوه بر عملگرهایی که قبلاً مورد بحث قرار گرفت، Transact-SQL از سه عملگر مجموعه دیگر پشتیبانی می کند: UNION، INTERSECT و EXCEPT.

    اپراتور اتحادیه

    اپراتور اتحادیهنتایج دو یا چند پرس و جو را در یک مجموعه نتیجه واحد ترکیب می کند که شامل تمام ردیف های متعلق به همه پرس و جوها در اتحادیه است. در نتیجه، نتیجه پیوستن دو جدول، یک جدول جدید است که شامل تمام ردیف‌های یک یا هر دو جدول اصلی است.

    شکل کلی عملگر UNION به شکل زیر است:

    select_1 UNION select_2 (select_3]) ...

    گزینه های select_1، select_2، ... عبارت های SELECT هستند که join را ایجاد می کنند. اگر از پارامتر ALL استفاده شود، تمام ردیف ها از جمله موارد تکراری نمایش داده می شوند. در عبارت UNION، پارامتر ALL همان معنای SELECT را دارد، اما با یک تفاوت: این پیش‌فرض برای یک SELECT است، اما باید به صراحت برای UNION مشخص شود.

    در شکل اصلی خود، SampleDb برای نشان دادن استفاده از عملگر UNION مناسب نیست. بنابراین یک جدول EmployeeEnh جدید در این بخش ایجاد می شود که یکسان است جدول موجودکارمند اما یک ستون شهر اضافی دارد. این ستون محل سکونت کارکنان را نشان می دهد.

    ایجاد جدول EmployeeEnh این فرصت را به ما می دهد تا استفاده از بند را نشان دهیم. بهدر عبارت SELECT دستور SELECT INTO دو عملیات را انجام می دهد. ابتدا یک جدول جدید با ستون های لیست شده در لیست SELECT ایجاد می شود. سپس سطرهای جدول اصلی به جدول جدید وارد می شوند. نام جدول جدید در عبارت INTO و نام جدول منبع در عبارت FROM مشخص شده است.

    مثال زیر ایجاد جدول EmployeeEnh را از جدول Employee نشان می دهد:

    از SampleDb استفاده کنید. SELECT * INTO EmployeeEnh FROM Employee. ALTER TABLE EmployeeEnh ADD City NCHAR (40) NULL;

    در این مثال، دستور SELECT INTO جدول EmployeeEnh را ایجاد می کند، تمام ردیف های جدول منبع Employee را در آن قرار می دهد و سپس دستور ALTER TABLE ستون City را به جدول جدید اضافه می کند. اما ستون شهر اضافه شده حاوی هیچ مقداری نیست. مقادیر را می توان در این ستون توسط محیط مدیریت Studio یا با کد زیر:

    از SampleDb استفاده کنید. به روز رسانی EmployeeEnh SET City = "Kazan" WHERE ID = 2581; به روز رسانی EmployeeEnh SET City = "Moscow" WHERE ID = 9031; به روز رسانی EmployeeEnh SET City = "Yekaterinburg" WHERE ID = 10102; به روز رسانی EmployeeEnh SET City = "St. Petersburg" WHERE Id = 18316; به روز رسانی EmployeeEnh SET City = "Krasnodar" WHERE ID = 25348; به روز رسانی EmployeeEnh SET City = "Kazan" WHERE ID = 28559; به روز رسانی EmployeeEnh SET City = "Perm" WHERE ID = 29346;

    ما اکنون آماده نشان دادن استفاده از بیانیه UNION هستیم. مثال زیر یک پرس و جو برای ایجاد پیوند بین جداول EmployeeEnh و Department با استفاده از این عبارت را نشان می دهد:

    از SampleDb استفاده کنید. SELECT City AS "City" FROM EmployeeEnh UNION SELECT Location FROM Department;

    نتیجه این پرس و جو:

    فقط جداول سازگار را می توان با استفاده از عبارت UNION ملحق کرد. منظور ما از جداول سازگار این است که هر دو لیست ستون های انتخابی باید دارای تعداد یکسانی از ستون ها باشند و ستون های مربوطه باید دارای انواع داده های سازگار باشند. (از نظر سازگاری، انواع داده های INT و SMALLINT سازگار نیستند.)

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

    پرس و جو در این مثال کارمندانی را انتخاب می کند که یا در بخش d1 کار می کنند یا قبل از 1 ژانویه 2008 روی پروژه ای کار می کنند.

    اپراتور UNION از گزینه ALL پشتیبانی می کند. این گزینه موارد تکراری را از مجموعه نتایج حذف نمی کند. در صورتی که تمام عبارات SELECT که توسط یک یا چند عملگر UNION به یک جدول ملحق شده اند، می تواند به جای عملگر UNION استفاده شود. در این حالت، مجموعه دستورات SELECT با یک دستور SELECT با مجموعه ای از دستورات OR جایگزین می شود.

    اپراتورهای INTERSECT و EXCEPT

    دو عملگر دیگر برای کار با مجموعه ها، تقاطعو بجز، به ترتیب تقاطع و تفاوت را تعریف کنید. در زیر تقاطع، در این زمینه، مجموعه ای از ردیف ها وجود دارد که متعلق به هر دو جدول است. و تفاوت بین دو جدول به صورت تمام مقادیری است که به جدول اول تعلق دارند و در جدول دوم وجود ندارند. مثال زیر استفاده از عملگر INTERSECT را نشان می دهد:

    Transact-SQL از استفاده از پارامتر ALL با عملگرهای INTERSECT یا EXCEPT پشتیبانی نمی کند. استفاده از عملگر EXCEPT در مثال زیر نشان داده شده است:

    لازم به یادآوری است که این سه عملگر مجموعه اولویت اجرای متفاوتی دارند: عملگر INTERSECT بالاترین اولویت را دارد و پس از آن به جز بیانیهو اپراتور UNION کمترین اولویت را دارد. عدم توجه به اولویت اجرا هنگام استفاده از چندین عملگر مجموعه مختلف می تواند منجر به نتایج غیرمنتظره شود.

    عبارات موردی

    در زمینه برنامه نویسی کاربردی پایگاه داده، گاهی اوقات لازم است که ارائه داده ها را اصلاح کنید. به عنوان مثال، افراد را می توان بر اساس طبقه اجتماعی خود با استفاده از مقادیر 1، 2، و 3 که به ترتیب نشان دهنده مردان، زنان و کودکان هستند، تقسیم بندی کرد. این تکنیک برنامه نویسی می تواند زمان لازم برای اجرای برنامه را کاهش دهد. عبارت CASE Transact-SQL به شما اجازه می دهد تا به راحتی این نوع رمزگذاری را پیاده سازی کنید.

    برخلاف اکثر زبان های برنامه نویسی، CASE یک عبارت نیست، بلکه یک عبارت است. بنابراین، یک عبارت CASE را می توان تقریباً در هر جایی که Transact-SQL اجازه استفاده از عبارات را می دهد استفاده می شود. عبارت CASE دو شکل دارد:

      عبارت CASE ساده؛

      عبارت جستجو CASE.

    سینتکس یک عبارت CASE ساده به صورت زیر است:

    یک عبارت با یک عبارت CASE ساده ابتدا لیست تمام عبارات موجود را جستجو می کند بند WHENاولین عبارتی که با express_1 مطابقت دارد و سپس عبارت مربوطه را اجرا می کند سپس بند... اگر هیچ عبارت منطبقی در لیست WHEN وجود ندارد، پس بند ELSE.

    نحو برای عبارت جستجوی CASE به شرح زیر است:

    V در این مورداولین شرط تطبیق جستجو می شود و سپس عبارت تطبیق THEN اجرا می شود. اگر هیچ یک از شرایط شرایط را برآورده نکرد، بند ELSE اجرا می شود. استفاده از عبارت جستجوی CASE در مثال زیر نشان داده شده است:

    از SampleDb استفاده کنید. SELECT ProjectName, CASE WHEN Budget> 0 AND Budget 100000 AND Budget 150000 AND Budget

    نتیجه این پرس و جو:

    این مثال بودجه همه پروژه ها را وزن می کند و وزن های محاسبه شده را همراه با نام پروژه های مربوطه نمایش می دهد.

    مثال زیر روش دیگری را برای استفاده از عبارت CASE نشان می دهد که در آن عبارت WHEN شامل سوالات فرعی است که بخشی از عبارت هستند:

    از SampleDb استفاده کنید. SELECT ProjectName, CASE WHEN p1.Budget (انتخاب AVG (p2.Budget) FROM Project p2) سپس "بالاتر از میانگین" END "رده بودجه" FROM Project p1;

    نتیجه این پرس و جو به شرح زیر است:

    هدف کار: یادگیری نحوه تشکیل ساده ترین پرس و جوها در پایگاه داده در زبان SQL، استفاده از عباراتی در پرس و جوهایی که شامل عملیات حسابی، توابع برای کار با رشته ها و تاریخ ها و توابع جمع می شود.

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

    سفارشات را انتخاب کنید * FROM Orders.

    درخواست بنویس

    انتخاب * از سفارشات

    زبان SQL به شما امکان می دهد نام جدول را قبل از نام فیلد حذف کنید، در مواردی که پرس و جو از یک جدول استفاده می کند، یا نام فیلد در چندین جدول در یک پرس و جو چند جدولی تکرار نمی شود.

    ساخت پرس و جوهای SQL در Access با فراخوانی Query Designer آغاز می شود. برای انجام این کار، در پنجره پایگاه داده، شی "Queries"، آیتم "Create" منو و در پنجره "New Query" مورد "Constructor" را انتخاب کنید. بعد، جدول "Orders" را انتخاب کنید و به حالت SQL بروید. تغییر به حالت SQL: منو دسترسی مشاهده  حالت Sql.

    شکل گیری درخواست را تمام کنید و آن را اجرا کنید.

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

    SELECT کد سفارش به عنوان سفارش، نام ذینفع به عنوان ذینفع، آدرس ذینفع به عنوان آدرس، تاریخ اجرا به عنوان تاریخ از سفارشات سفارش بر اساس نام ذینفع ASC;

    در مثال کد سفارش، نام گیرنده، آدرس گیرندهو تاریخ اجرا- نام فیلدها در جدول "سفارش ها". هنگامی که نتایج پرس و جو بر روی صفحه نمایش نمایش داده می شود، نام فیلدها با نام مستعار مربوطه مشخص شده پس از کلمه جایگزین می شود. مانند.

    جمله

    سفارش بر اساس نام گیرنده ASC

    برای مرتب کردن رکوردهای انتخابی به ترتیب صعودی (یعنی حروف الفبا) مقدار فیلد استفاده می شود. نام گیرنده.اگر نیاز به مرتب سازی به ترتیب نزولی دارید , سپس به جای ASC باید از DESC (مخفف نزولی) استفاده کند.

    این درخواست را تشکیل داده و اجرا کنید.

    خروجی رکوردها بدون تکراردرخواست زیر را تشکیل داده و اجرا کنید

    SELECT BeneficiaryName به عنوان Beneficiary از سفارشات ORDER BY BeneficiaryName DESC.

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

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

    ضرب.درخواست خروج از جدول "سفارش داده شده" کد محصول، قیمت، مقدار و هزینه کل محصول سفارش داده شده را تشکیل دهید. درخواست به این شکل است:

    کد محصول، قیمت، تعداد، را انتخاب کنید قیمت * تعدادبه عنوان هزینه از سفارش.

    بدون کمک دیگریدرخواست خود را با قیمت تخفیف تکمیل کنید.

    با استفاده از توابععملکرد STR ()در نظر گرفته شده است که به نوع متن تبدیل شود. پرس و جو زیر برای نمایش هزینه یک محصول به هزار روبل با نشان دادن واحد اندازه گیری در صفحه نمایش استفاده می شود:

    کد محصول را انتخاب کنید، خ(قیمت * مقدار / 1000) + "هزار روبل" به عنوان هزینه از سفارش.

    برای اینکه شماره و متن در ستون "هزینه" چاپ شود، باید عدد را به یک نوع متن تبدیل کنید و آن را با متن "هزار روبل" ترکیب کنید. برای تبدیل، از تابع استفاده کنید خ (<выражение числового типа>) و عملیات ادغام "+" (الحاق).

    یک پرس و جو ایجاد کنید که در آن 5 فیلد از جدول "Orders" انتخاب شده و نتیجه در دو ستون نمایش داده شود. ستون اول فیلد "کد سفارش" را نمایش می دهد و در ستون با نام مستعار "آدرس مشتری" فیلدهای زیر ترکیب می شوند: فهرست گیرنده، کشور گیرنده، شهر گیرنده، نام گیرنده.

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

    عملکرد DATEPART () برای برجسته کردن بخشی از تاریخ.برای توضیح این عملکرد (محتوا، مرجع زبان ویژوال بیسیک، توابع، حرف D) به راهنمای دسترسی مراجعه کنید.

    با پرس و جو در جدول "سفارش ها" تعیین کنید که کالا برای چه سالی تحویل داده شده است.

    توابع مجموع(در Access آماری نامیده می شوند.) بیایید تعداد کل رکوردها را در جدول "Orders" و تعداد رکوردهای حاوی داده ها را در قسمت "RecipientScope" بشماریم، یعنی تعداد رکوردهایی را که یک قسمت "RecipientScope" خالی ندارند. برای این کار کوئری زیر را اجرا کنید:

    تعداد SELECT (*)، شمارش (ReceiverScope) FROM Orders.

    پرس و جو از یک تابع جمع استفاده می کند شمردن ().با استفاده از توابع انبوه MAX ()، MIN () و AVG ()، یک جستجو برای محاسبه حداکثر حداقل و میانگین قیمت یک محصول در جدول محصولات ایجاد کنید.

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

    تمام درخواست هایی که ایجاد کرده اید را ذخیره کنید و به معلم نشان دهید.

    امروز ما در مورد "عملیات انبوه در جستجوهای دسترسی" صحبت خواهیم کرد. عملیات انبوه در جستارهای Access به شما امکان می دهد گروه هایی از رکوردها را با مقادیر یکسان در فیلدهای مشخص انتخاب کنید و مجموع هر یک از گروه ها را از فیلدهای دیگر با استفاده از یکی از توابع انبوه محاسبه کنید. توابع آماری در درجه اول برای انواع داده های عددی، ارزی، تاریخ/زمان قابل اجرا هستند.
    V دسترسی داشته باشیدنه تابع آماری وجود دارد:

    • Sum - مجموع مقادیر یک فیلد خاص برای گروه.
    • میانگین - میانگین تمام مقادیر فیلد در گروه؛
    • حداکثر، حداقل - حداکثر، حداقل مقدار فیلد در گروه.
    • شمارش - تعداد مقادیر فیلد در گروه، به استثنای مقادیر خالی؛
    • StDev - انحراف استاندارد از مقدار میانگین فیلد در گروه.
    • Var واریانس مقادیر فیلد در گروه است.
    • First and Last - مقدار فیلد از اولین یا آخرین رکورد در گروه.

    نتیجه با استفاده از عملیات گروه شامل یک رکورد برای هر گروه است. پرس و جو، اول از همه، شامل مواردی است که گروه بندی توسط آنها انجام می شود و فیلدهایی که برای آنها انجام می شود توابع آماری... علاوه بر این فیلدها، پرس و جو ممکن است شامل فیلدهایی باشد که شرایط انتخاب توسط آنها تنظیم می شود.
    بیایید ساخت یک پرس و جو تک جدولی را با عملیات گروهی با استفاده از جدول DELIVERY_PLAN به عنوان مثال در نظر بگیریم.

    پرس و جوی جمع

    وظیفه.تعیین مقدار کل هر یک از کالاهایی که طبق قراردادها به خریداران عرضه می شود. تمام اطلاعات مربوط به مقدار کالای برنامه ریزی شده برای تحویل در جدول DELIVERY_PLAN نشان داده شده است.

    1. در حالت طراحی، یک پرسش انتخابی از جدول DELIVERY_PLAN ایجاد کنید.
    2. از لیست جدول، قسمت CODE_TO - کد محصول را به فرم درخواست بکشید. این فیلد برای گروه بندی رکوردهای جدول استفاده خواهد شد.
    3. فیلد QUANTITY_POST را در فرم درخواست بکشید و رها کنید که بر اساس آن مقدار کل هر یک از کالاهای سفارش داده شده در تمام قراردادها محاسبه می شود.
    4. دستور Totals را از گروه Show/Hide اجرا کنید. فرم درخواست نمایش داده خواهد شد خط جدیدعملیات گروهی (Total) با مقدار Group By در هر دو فیلد پرس و جو.
    5. در ستون QUANT_POST، کلمه Group By را با تابع Sum جایگزین کنید. برای انجام این کار، لیست را فراخوانی کرده و این عملکرد را انتخاب کنید. فرم درخواست به شکل نشان داده شده در شکل خواهد بود. 4.11.
    6. برای نمایش نتیجه پرس و جو (شکل 4.12)، روی دکمه Run در گروه Results کلیک کنید.
    7. عنوان فیلد Sum-QTY_POST را با موارد سفارش داده شده جایگزین کنید. برای این کار به حالت طراحی رفته، در قالب درخواست، نشانگر ماوس را روی قسمت QTY_POST قرار داده و دکمه سمت راست را فشار دهید. V منوی زمینه Properties را انتخاب کنید. در پنجره Field Properties، Caption - Items ordered را وارد کنید. برای باز کردن برگه ویژگی، دستور Property Sheet در گروه Show / Hide قابل اجرا است.


    1. با نام کالای سفارش داده شده ذخیره کنید.
    2. برای شمارش تعداد کالاهای سفارش داده شده در هر ماه، دو فیلد CODE_TO و TIME_POST را گروه بندی کنید که ماه تحویل را ذخیره می کند (شکل 4.13).
    3. برای محاسبه تعداد کالاهای سفارش داده شده در یک ماه، درخواست قبلی را با وارد کردن یک پارامتر درخواست در شرایط انتخاب تکمیل کنید (شکل 4.14).



    با تابع شمارش پرس و جو کنید

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

    1. یک کوئری انتخابی بر اساس جدول OVERLAY ایجاد کنید.
    2. از لیست فیلدهای جدول BILLBOARD، فیلد NOM_DOG را به فرم درخواست بکشید. این فیلد باید برای گروه بندی استفاده شود.
    3. در واقع معنای مشکل به شمارش تعداد ردیف های جدول با همان شماره قرارداد خلاصه می شود، بنابراین فرقی نمی کند که تابع Count در کدام فیلد محاسبه شود. هر فیلدی را به فرم درخواست بکشید، برای مثال، دوباره NOM_DOG.
    4. دستور Totals را از گروه Show/Hide اجرا کنید. کلمه Group By را در یکی از ستون ها به نام NOM_DOG با تابع Count جایگزین کنید. فرم درخواست به شکل نشان داده شده در شکل خواهد بود. 4.15.

    با مقدار ستون نظم و انضباط. ما 4 گروه دریافت می کنیم که می توانیم مقادیر گروهی را برای آنها محاسبه کنیم، به عنوان مثال تعداد تاپل ها در یک گروه، حداکثر یا حداقل مقدار ستون Score. جدول 5.7. توابع مجموع
    عملکرد نتیجه
    شمردن تعداد سطرها یا مقادیر فیلد غیر خالی که پرس و جو انتخاب کرده است
    جمع مجموع تمام مقادیر انتخاب شده برای این فیلد
    AVG میانگین حسابی همه مقادیر انتخاب شده در این فیلد
    MIN کوچکترین مقدار از تمام مقادیر انتخاب شده برای این فیلد
    حداکثر بزرگترین مقادیر انتخاب شده برای این فیلد
    R1
    نام و نام خانوادگی انضباط مقطع تحصیلی
    گروه 1 پتروف F.I. پایگاه داده 5
    K. A. Sidorov پایگاه داده 4
    میرونوف A.V. پایگاه داده 2
    استپانووا K.E. پایگاه داده 2
    کریلوا T.S. پایگاه داده 5
    ولادیمیروف V.A. پایگاه داده 5
    گروه 2 K. A. Sidorov نظریه اطلاعات 4
    استپانووا K.E. نظریه اطلاعات 2
    کریلوا T.S. نظریه اطلاعات 5
    میرونوف A.V. نظریه اطلاعات خالی
    گروه 3 تروفیموف P.A. شبکه و مخابرات 4
    ایوانووا E.A. شبکه و مخابرات 5
    N. V. Utkina شبکه و مخابرات 5
    گروه 4 ولادیمیروف V.A. زبان انگلیسی 4
    تروفیموف P.A. زبان انگلیسی 5
    ایوانووا E.A. زبان انگلیسی 3
    پتروف F.I. زبان انگلیسی 5

    توابع مجموعمانند نام فیلدها استفاده می شود عبارت SELECTاما با یک استثنا: آنها نام فیلد را به عنوان آرگومان می گیرند. فقط می توان از SUM و AVG استفاده کرد فیلدهای عددی... هر دو فیلد عددی و کاراکتری را می توان با توابع COUNT، MAX و MIN استفاده کرد. هنگامی که با فیلدهای کاراکتر استفاده می شود، MAX و MIN آنها را به معادل ASCII ترجمه کرده و بر اساس حروف الفبا پردازش می کنند. برخی از DBMS ها اجازه استفاده از توده های تودرتو را می دهند، اما این یک انحراف از استاندارد ANSI با تمام عواقب بعدی است.

    به عنوان مثال، می توانید تعداد دانش آموزانی را که در هر رشته امتحانات قبول شده اند محاسبه کنید. برای انجام این کار، باید یک پرس و جو گروه بندی شده توسط فیلد "Discipline" را اجرا کنید و در نتیجه نام رشته و تعداد ردیف های گروه را برای این رشته نمایش دهید. استفاده از کاراکتر * به عنوان آرگومان برای تابع COUNT به این معنی است که تمام خطوط گروه شمارش می شوند.

    رشته R1 را انتخاب کنید، تعداد (*) از R1 GROUP BY R1 Discipline

    نتیجه:

    اگر بخواهیم تعداد کسانی را که در هر رشته ای امتحان داده اند بشماریم، قبل از گروه بندی باید مقادیر نامشخص را از نسبت اولیه حذف کنیم. در این صورت درخواست به صورت زیر خواهد بود:

    نتیجه را می گیریم:

    در این مورد، خط با دانش آموز

    میرونوف A.V. نظریه اطلاعات خالی

    قبل از گروه بندی در مجموعه تاپل ها قرار نمی گیرد، بنابراین تعداد تاپل ها در گروه برای رشته " نظریه اطلاعات"1 کمتر خواهد بود.

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

    با مراجعه مجدد به پایگاه داده Session (جدول R1، R2، R3)، تعداد امتحانات با موفقیت را خواهیم یافت:

    البته این با انتخاب یک فیلد متفاوت است، زیرا صرف نظر از تعداد ردیف‌های جدول، همیشه یک مقدار برگردانده می‌شود. بحث و جدل توابع کلمی تواند ستون های جداگانه جداول وجود داشته باشد. اما برای محاسبه مثلاً تعداد مقادیر متمایز یک ستون خاص در یک گروه، لازم است از کلمه کلیدی DISTINCT همراه با نام ستون استفاده شود. بیایید تعداد نمرات دریافتی مختلف برای هر رشته را محاسبه کنیم:

    نتیجه:

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

    نتیجه:

    ما نمی توانیم استفاده کنیم توابع کلدر عبارت WHERE زیرا محمول ها بر حسب یک ردیف ارزیابی می شوند و توابع کل- از نظر گروه های خط.

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

    بیایید یک پرس و جو بسازیم که گروه هایی را که در آنها بیش از یک دس در یک رشته در امتحانات به دست آمده را نشان دهد:

    در ادامه، به عنوان مثال، ما نه با پایگاه داده "Session"، بلکه با پایگاه داده "Bank" کار خواهیم کرد که از یک جدول F تشکیل شده است که رابطه F را حاوی اطلاعات حساب های موجود در شعب یک بانک خاص ذخیره می کند. :

    F = (N، نام کامل، شعبه، تاریخ افتتاح، تاریخ بسته شدن، موجودی)؛ Q = (شعبه، شهر)؛

    زیرا بر این اساس می توانید کار را با توابع کل و گروه بندی بهتر به تصویر بکشید.

    برای مثال فرض کنید می خواهیم کل موجودی حساب را در شعب پیدا کنیم. می توانید با انتخاب SUM (Remaining) از جدول برای هر شاخه، یک پرس و جو جداگانه برای هر یک از آنها ایجاد کنید. با این حال، GROUP BY به شما این امکان را می دهد که همه آنها را در یک دستور قرار دهید:

    SELECT شعبه، جمع (موجودی) FROM F GROUP BY BY.

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

    مقالات مرتبط برتر