نمونه های محاسبه درصد SQL در سرور SQL

ساخت وبلاگ

Ben Richardson

percentage of total prices in products table

در این مقاله روشهای مختلفی برای محاسبه درصد SQL بین ستون های مختلف و ردیف ها مشاهده خواهید کرد. همچنین می توانید نحوه محاسبه درصد SQL را برای ستون های عددی ، که توسط ستون های طبقه بندی شده است ، محاسبه کنید. برای یافتن درصد SQL از زیرگروه ها ، بند بیش از حد و عبارات جدول مشترک (CTE) استفاده خواهید کرد. بنابراین ، بیایید بدون هیچ گونه ADO شروع کنیم.

یافتن درصد با استفاده از دو متغیر

هیچ اپراتور داخلی وجود ندارد که درصد را در SQL Server محاسبه کند. برای یافتن درصد در SQL Server باید به عملیات اصلی حسابی یعنی (شماره 1/شماره 2 x 100) اعتماد کنید. قبل از یافتن درصد SQL در ردیف ها و ستون ها ، ابتدا می بینیم که چگونه می توانید با استفاده از دو متغیر اساسی در SQL Server ، درصد را پیدا کنید. اسکریپت زیر سه متغیر شناور @num1 ، @num2 و perc را تعریف می کند. در مرحله بعد ، متغیر @num2 با متغیر @num1 تقسیم می شود و نتیجه آن توسط 100 ضرب می شود که در متغیر perc ذخیره می شود و روی کنسول چاپ می شود.

@ num1 را به عنوان شناور اعلام کنید @ num2 را به عنوان شناور اعلام کنید @ perc را به عنوان شناور اعلام کنید set @ num1 = 150 تنظیم @ num2 = 50 set @ perc = @ num2 / @ num1 * 100 چاپ @ perc

result of basic percentage

خروجی:

یافتن درصد بین دو ستون

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

ایجاد نتیجه جدول (شناور به دست آمده ، شناور کل) درج مقادیر نتیجه (15 ، 50) ، (10 ، 50) ، (20 ، 50) ، (40 ، 50) ، (25 ، 50) انتخاب کنید * از نتیجه

percentages accross columns

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

انتخاب شده ، کل ، به دست آمده / کل * 100 را به عنوان "درصد" انتخاب کنید از نتیجه

Result set

یافتن درصد از طریق زیرمجموعه ها

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

ایجاد نمرات جدول (Val Float) مقادیر نمرات (Val) (15) ، (10) ، (20) ، (40) ، (25) ؛ انتخاب کنید * از نمرات

result of percentage via subquery

خروجی: اکنون اگر می خواهید پیدا کنید که درصد از کل مقادیر کل در ستون "VAL" هر مقدار را تشکیل می دهد ، می توانید از زیرمجموعه ها استفاده کنید. در این راستا ، پرس و جو بیرونی تمام مقادیر موجود در ستون "Val" را با 100 ضرب می کند که براساس نتیجه زیرمجموعه تقسیم می شود که مجموع تمام مقادیر موجود در ستون "VAL" را پیدا می کند. ابتدا ببینیم که چگونه زیر قیمتی ما به نظر می رسد که مقدار مقادیر موجود در ستون "Val" را محاسبه می کند.

مبلغ (VAL) را به عنوان "مبلغ کل" انتخاب کنید از نمرات

Output of SUM

خروجی: اسکریپت زیر درصد کل برای هر مقدار در ستون "Val" را برمی گرداند.

وال را انتخاب کنید ، Val * 100 / (SELECT SUM (VAL) از نمرات) به عنوان "درصد کل" از نمرات

percentage of total values using subqueries

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

وال را انتخاب کنید ،

val * 100 / (جمع (val) را از نمرات که در آن وال است انتخاب کنید<40 ) as 'Percentage of Total' From Scores WHERE val <40

percentage of total values using subqueries with WHERE clause

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

وال را انتخاب کنید ،

دور (Val * 100 / (جمع (Val) را از نمرات جایی که VAL انتخاب می کند<40 ) , 2 ) as 'Percentage of Total' From Scores WHERE val <40

percentage of total values using subqueries with ROUND OFF

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

از Northwind استفاده کنید * از محصولات انتخاب کنید

Products table from Northwind database

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

  1. تعداد کل کالاهایی که می توانید از طریق عملکرد شمارش بدست آورید
  2. تعداد کل محصولات تهیه شده برای هر تأمین کننده ، که می توانید با استفاده از این گروه از گروه استفاده کنید.

 

سپس می توانید مقدار دوم (تعداد محصولات گروه بندی شده توسط IDS تأمین کننده) را 100 ضرب کرده و سپس نتیجه را با مقدار 1 ST (تعداد کل محصولات) تقسیم کنید.

در اینجا نحوه استفاده از زیرمجموعه ها برای یافتن چنین درصد SQL آورده شده است.

از Northwind استفاده کنید

SELECTIORID ، COUNT ( *) * 100. 0 / (انتخاب ( *) از محصولات) را به عنوان "درصد تأمین کننده" انتخاب کنید

از محصولات گروه توسط تأمین کننده

خروجی:

percentage of total products by suppliers

نتایج فوق نشان می دهد که درصد محصولات تهیه شده توسط هر تأمین کننده. به عنوان مثال ، می بینید که تأمین کننده دارای ID 1 3. 89 ٪ از کل محصولات را تأمین می کند.

استفاده از بند بیش از

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

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

از Northwind استفاده کنید SELECTIERID ، COUNT ( *) * 100. 0 / SUM (COUNT ( *)) را به عنوان "درصد تأمین کننده" انتخاب کنید از محصولات گروه توسط تأمین کننده

خروجی زیر شبیه به آنچه شما با استفاده از زیرمجموعه به دست آورده اید.

خروجی:

result of calculating percentage using OVER clause

اکنون یک نمونه پیچیده تر از یافتن درصد SQL را مشاهده می کنیم. سناریویی را در نظر بگیرید که برای هر تأمین کننده می خواهید درصد قیمت واحد را برای همه محصولات محاسبه کنید. به عبارت دیگر ، شما می خواهید بدانید که چه درصد از مبلغ قیمت واحد برای همه محصولات به یک تأمین کننده متفاوت پرداخت می شود. شما می توانید این کار را با کمک بند Over به شرح زیر انجام دهید.

در اسکریپت زیر ، شناسه های تأمین کننده به همراه مبلغ واحد واحد پرداخت شده به کلیه تأمین کنندگان و درصد قیمت واحد پرداخت شده به کلیه تأمین کنندگان نمایش داده می شوند.

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

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

تجارت با گزینه‌‌های باینری...
ما را در سایت تجارت با گزینه‌‌های باینری دنبال می کنید

برچسب : نویسنده : حمیدرضا پگاه بازدید : 24 تاريخ : چهارشنبه 4 مرداد 1402 ساعت: 18:48