عبارتهای حسابی و نام مستعار ستونها در SQL
4 - عبارتها
- عبارتهای حسابی
- عبارتها در Clauseهای دیگر
- نامهای مستعار ستون
صفحه PDF 38 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
عبارتهای حسابی
عبارت حسابی (Arithmetic Expression) عبارتی است که از عملوندها - یعنی مقادیر عددی و/یا نام ستونها - و عملگرهای حسابی تشکیل میشود. SQL عبارت حسابی را ارزیابی و آن را با مقدار عددی مناسب جایگزین میکند.
عملگرهای حسابی| عملگر | معنی | مثال |
|---|
+ | جمع | 2 + 2 |
- | تفریق | BDATE - 365 |
* | ضرب | POP * 1.25 |
/ | تقسیم | PERCENT / 100 |
( ) | تقدم | 2 + (4 / 2) |
عملوندها میتوانند مقدار عددی یا نام ستون باشند
عملوندهای معتبر شامل اعداد، نام ستونها و عبارتهای دیگر هستند. وقتی ستون در یک عبارت استفاده میشود، مقادیر آن ستون باید عددی یا تاریخ معتبر باشند. برای تاریخها فقط جمع و تفریق معتبر است.
عملگرها بین عملوندها قرار میگیرند
عملگر حسابی طبق روش معمول بین عملوندهای خود نوشته میشود. فاصله در دو طرف عملگر اجباری نیست، هرچند در مثالها برای خوانایی استفاده شده است.
عبارتهای داخل پرانتز زودتر ارزیابی میشوند
SQL ابتدا عبارتهای حسابی داخل پرانتز را محاسبه میکند و سپس نتیجه را با عبارتهای دیگر همان دستور ترکیب میکند. جای پرانتزها میتواند مقدار نهایی عبارت را بهطور چشمگیری تغییر دهد.
صفحه PDF 39 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
عبارتهای حسابی - ادامه
علاوه بر ستاره و نام ستونها، میتوان عبارتها را نیز در فهرست ستونهای Clause SELECT نوشت. SQL در موقعیت تعیینشده یک ستون محاسبهشده به جدول نتیجه اضافه میکند. نام پیشفرض ستون جدید خود عبارت است.
SELECT COUNTRY, POP / AREA
FROM COUNTRIES
WHERE LANGUAGE = 'GERMAN';
SELECT COUNTRY, GNP * 1.4
FROM COUNTRIES
WHERE LANGUAGE = 'GERMAN';
- عبارتها در Clause
SELECT مشخص میشوند. - عبارتها ستونهای جدیدی در نتیجه تولید میکنند.
- عبارت برای هر سطر جداگانه محاسبه میشود.
صفحه PDF 40 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
عبارتهای حسابی - ادامه
در نحو فعلی SELECT، امکان درج عبارت در Clause SELECT افزوده شده است. عملگرهای حسابی نیز در صفحه منبع خلاصه شدهاند.
SELECT [ DISTINCT ] collist, expression
FROM table
ORDER BY col [ DESC ] list
-- Example expression
POP / AREA
تمرینها
- اگر 20 درصد کاناداییها به آمریکا مهاجرت کنند، چند آمریکایی جدید به جمعیت آمریکا افزوده میشود؟
- در آمریکا برای هر سرباز چه مقدار پول خرج میشود؟ در چین چطور؟
- تعداد کل وسایل نقلیه/تجهیزات نظامی آمریکا را محاسبه کنید: تانکها بهعلاوه کشتیها بهعلاوه هواپیماها.
امتیاز اضافه
- فرض کنید 45 درصد بودجه نظامی برای چکشهای 125 دلاری خرج میشود. چند چکش در اختیار داریم؟
صفحه PDF 41 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
عبارتها در Clauseهای دیگر
از آنجا که SQL عبارتهای موجود در SELECT را مانند «ستونهای مجازی» پرشده با مقادیر محاسبهشده در نظر میگیرد، میتوان از عبارتها بهجای نام ستون در Clauseهای WHERE و ORDER BY نیز استفاده کرد.
SELECT COUNTRY, POP / AREA
FROM COUNTRIES
WHERE POP / AREA > 2000;
SELECT COUNTRY, POP / AREA
FROM COUNTRIES
WHERE POP / AREA > 2000
ORDER BY POP / AREA DESC;
- عبارتها میتوانند در Clause
WHERE استفاده شوند. - عبارتها میتوانند در Clause
ORDER BY استفاده شوند.
صفحه PDF 42 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
عبارتها در Clauseهای دیگر - ادامه
در نحو فعلی، عبارتها در Clauseهای WHERE و ORDER BY نیز مجاز شدهاند.
SELECT [ DISTINCT ] collist, expression
FROM table
WHERE comparison
OR expression comparison
ORDER BY col [ DESC ] list
OR expression [ DESC ] list
-- Example
WHERE POP / AREA > 300
ORDER BY POP / AREA DESC
تمرینها
- کشور، جمعیت، مساحت و تراکم جمعیت (
POP/AREA) را برای کشورهایی نمایش دهید که تراکمشان کمتر از 7 نفر در هر مایل مربع است. بیشترین تراکم را در بالا قرار دهید. نتیجه 7 سطر دارد. - کشور، جمعیت، نرخ سواد و تعداد افراد باسواد را برای همه کشورهایی نشان دهید که بیش از 100 میلیون فرد باسواد دارند. برای محاسبه تعداد افراد باسواد، نرخ سواد را بر 100 تقسیم و نتیجه را در جمعیت ضرب کنید. 7 سطر وجود دارد.
امتیاز اضافه
- فرض کنید همه ارتشها 30 درصد بودجه خود را برای زیرسیگاری خرج میکنند و میانگین قیمت هر زیرسیگاری نظامی 650 دلار است. کشور و تعداد زیرسیگاری بهازای هر سرباز را نمایش دهید، اما فقط اگر این عدد بیش از 10 باشد. بیشترین مقدار را در بالا قرار دهید. 9 کشور چنین وضعی دارند.
صفحه PDF 43 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
نام مستعار ستونها
کلیدواژه AS در Clause SELECT برای تعریف نام مستعار ستون (Column Alias)، یعنی نامی که کاربر به ستون اختصاص میدهد، استفاده میشود. برای هر ستونی میتوان Alias تعریف کرد، اما کاربرد رایج آن نامگذاری معنادار ستونهای محاسبهشده است.
SELECT COUNTRY, POP / AREA
FROM COUNTRIES
WHERE POP / AREA > 2000
ORDER BY POP / AREA DESC;
SELECT COUNTRY,
POP / AREA AS DENSITY
FROM COUNTRIES
WHERE DENSITY > 2000
ORDER BY DENSITY DESC;
- Alias ستون در Clause
SELECT تعریف میشود. - Alias را میتوان در Clause
WHERE استفاده کرد. - Alias را میتوان در Clause
ORDER BY استفاده کرد. - در برخی گویشهای SQL، نوشتن
AS اختیاری است.
صفحه PDF 44 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
نام مستعار ستونها - ادامه
در نحو فعلی، کلیدواژه AS و Aliasهای ستون به Clause SELECT افزوده شدهاند.
SELECT [ DISTINCT ] col [ AS alias ] list,
expr [ AS alias ] list
FROM table
WHERE comparison
ORDER BY col [ DESC ] list,
expr [ DESC ] list
-- Examples
LANGUAGE AS LANG
POP / AREA AS DENSITY
تمرینها
- کشور، جمعیت، نرخ سواد و تعداد افراد باسواد را برای همه کشورهایی نشان دهید که بیش از 100 میلیون فرد باسواد دارند. نام ستون محاسبهشده را
READERS قرار دهید و هرجا مناسب است از این Alias استفاده کنید. نتیجه 7 سطر دارد. - با استفاده از Alias ستون، کشور، جمعیت، GNP و GPP را نمایش دهید. GPP مخفف Gross Personal Product و برابر
GNP * 1000000 / POP است. فقط کشورهایی را نشان دهید که GPP آنها بیش از 20,000 است و نتیجه را بر اساس GPP نزولی مرتب کنید. 9 سطر وجود دارد.
امتیاز اضافه
- پیشنهاد شده کشورهای جهان 20 درصد نیروهای نظامی خود را کاهش دهند و صرفهجویی حاصل را به نیروگاههای هستهای اختصاص دهند. هزینه متوسط هر سرباز 20,000 دلار است. سهم هر کشور چقدر خواهد بود؟ نام ستون محاسبهشده را
FISSION_FUND بگذارید، بیشترین مقدار را در بالا قرار دهید و کشورهایی را که کمتر از دو میلیارد سهم دارند حذف کنید.
صفحه PDF 45 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده