Theory
બદલો, summarise ન કરો
પાછલા lesson ની aggregates એ ઘણી rows ને એક number માં કચડી નાખી. Scalar functions ઊલટું કરે છે: એ એક વખતે એક value અડે છે અને per row એક પરિણામ પાછું આપે છે, દરેક row ને ઊભી રાખતા.
Meera એક printed list માટે item names CAPITALS માં માંગે છે, કે prices આખા રૂપિયા સુધી rounded, કે દરેક category ના બસ પહેલા ત્રણ અક્ષર એક code તરીકે. દરેક એક દરેક row ને અલગ-અલગ બદલે છે.
Scalar-વિરુદ્ધ-aggregate ભેદ નાનો છે પણ exam-મહત્વનો: શું function table ને summarise કરે છે, કે દરેક row ને transform? અહીં, transform.
Theory
એક સિક્કો વિરુદ્ધ એક juicer
પાછલા lesson નો aggregate એક juicer હતો: ઘણા સંતરા, એક ગ્લાસ. એક scalar function એક રબર સિક્કો છે: એ દરેક page પર એક વાર દબાય છે, દરેક page હજી મોજૂદ છે, દરેક બસ ચિહ્નિત. 500 item names પર UCASE ચલાવો અને તમને 500 uppercase names મળે છે, એક નહીં. Scalar = per row એક સિક્કો; aggregate = આખા ઢગલા માંથી એક રસ. એ જ input table, ઊલટો output આકાર.
At a glance
સામાન્ય scalar functions
| Function | કરે છે | ઉદાહરણ પરિણામ |
|---|---|---|
| UCASE / UPPER | Uppercase માં | 'Sugar' થી 'SUGAR' |
| LCASE / LOWER | Lowercase માં | 'Sugar' થી 'sugar' |
| ROUND(n, d) | એક number round કરવો | ROUND(58.7,0) = 59 |
| MID / SUBSTRING | Text નો ભાગ કાઢવો | MID('Grocery',1,3) = 'Gro' |
| LENGTH / CONCAT | Length / text જોડવું | LENGTH('Tea') = 3 |
Practical
Transform each row
-- One result PER ROW: all 5 rows still returned
SELECT UCASE(item) AS name,
ROUND(price * 0.9, 0) AS discounted,
MID(category, 1, 3) AS code
FROM sales;
-- SUGAR | 41 | Gro
-- TEA |108 | Bev
-- RICE | 54 | Gro
-- SOAP | 32 | Per
-- MILK | 27 | DaiQuiz
SELECT UCASE(item) FROM sales (5 rows) કેટલી rows પાછી આપે છે, અને SELECT COUNT(item) FROM sales કેટલી પાછી આપે છે?
- UCASE 5 rows પાછી આપે છે (per row એક); COUNT 1 row પાછી આપે છે (એક એકલો કુલ)
- બંને 1 row પાછી આપે છે
- બંને 5 rows પાછી આપે છે
- UCASE 1 પાછી આપે છે, COUNT 5
Show the answer
UCASE 5 rows પાછી આપે છે (per row એક); COUNT 1 row પાછી આપે છે (એક એકલો કુલ)
UCASE scalar છે: per row એક પરિણામ, તો બધી 5 rows પાછી આવે છે (દરેક name uppercase). COUNT aggregate છે: એ બધી rows ને 1 value માં સમેટે છે (ગણતરી). આ જ મૂળ વાત છે, scalar rows બચાવે છે, aggregate એમને કચડે છે. કયા functions શું કરે છે એ જાણવું બરાબર એ જ છે જે scalar-વિરુદ્ધ-aggregate exam સવાલ તપાસે છે.
Think first
એક category code બનાવો
Meera દરેક category માંથી એક 3-અક્ષર uppercase code માંગે છે (Grocery થી GRO). એ કઈ બે scalar functions જોડે છે, અને કયા ક્રમમાં?
Show the answer
MID/SUBSTRING (પહેલા 3 અક્ષર લેવા) અને UCASE (એમને uppercase કરવા) જોડો: UCASE(MID(category, 1, 3)), 'Gro' કાઢો, પછી uppercase કરીને 'GRO'. Functions nest થાય છે, અંદરની પહેલા ચાલે છે (કાઢવું), બહારની બીજી (uppercase), બરાબર Excel કે ગણિતમાં nesting ની જેમ. બંને scalar છે, તો દરેક row ને હજી પોતાનો code મળે છે.
Watch out
Marks ક્યાં કપાય છે
મુખ્ય ગૂંચવણ: scalar (per row એક પરિણામ, table રહે છે) વિરુદ્ધ aggregate (કુલ એક પરિણામ, rows સમેટાય છે), ભેદ સાફ વ્યાખ્યાયિત કરો. dialect નામો પર ધ્યાન: UCASE/UPPER અને LCASE/LOWER અલગ databases માં એ જ વસ્તુ છે; MID (Access/MySQL) અને SUBSTRING પણ એમ જ. અને ROUND નો બીજો argument decimal places નક્કી કરે છે (ROUND(n,0) = પૂર્ણ સંખ્યા). scalar-વિરુદ્ધ-aggregate રેખા સાચી કરવી એ આ lessons ની જોડીનો આખો હેતુ છે.
Theory
Excel, એક વાર વધુ
UPPER, LOWER, ROUND, MID, આ ખરેખર Excel ના text અને number functions છે (Unit 1 નો ROUND, Unit 2 ના helpers), હવે SQL માં. સ્થાનાંતરણ પૂરું છે: spreadsheets એ તમને functions શીખવ્યા; SQL એમને અસલી databases સુધી વધારે છે. બે lessons એ query વાર્તા બંધ કરી; બે subject બંધ કરવા બચે છે: sequences સ્વયંસંચાલિત ID numbers માટે, પછી views. આગળ: એક sequence બનાવવો.
Summary
Key takeaways
- Scalar functions એક value બદલે છે અને per row એક પરિણામ પાછું આપે છે (table એની બધી rows રાખે છે).
- આ aggregates થી ઊલટું છે, જે ઘણી rows ને એક value માં સમેટે છે.
- UCASE/UPPER અને LCASE/LOWER case બદલે છે; ROUND(n,d) round કરે છે; MID/SUBSTRING text કાઢે છે.
- ફક્ત scalars વાળો SELECT દરેક row પાછી આપે છે; aggregate વાળો SELECT એક પાછી આપે છે.
- Functions nest થાય છે: અંદરની પહેલા ચાલે છે (UCASE(MID(category,1,3))).
- યાદ રાખવાની યુક્તિ: scalar દરેક page પર એક સિક્કો છે; aggregate આખા ઢગલા માટે એક juicer.