разбиране SQL

6. СИНТЕЗ НА ДАННИ ОТ обобщаващи функции

В тази глава ще минете покрай простата употреба на заявки за извличане на стойности от базата данни и да определи как можете да използвате тези стойности, за да получите информация от тях. Това се прави с помощта на агрегат или основните функции, които вземат стойности от групата на пода и да ги намалят до една стойност. Ще се научите как да използвате тези функции, как да се определи стойността на групата, към която те ще се прилагат и как да се определи кои групи са избрани за изход. Ще видите също така условията, при които ще можете да комбинирате стойностите на пода с информацията, получена в една заявка.

КАКВО Е Обобщаващи функции?

Заявките могат да произвеждат общи ценности полеви група точно като стойността на един етаж. Това прави, използвайки обобщени функции. Обобщените функции произвежда една стойност за цялата маса група. Има списък на тези функции:

* COUNT - произвежда номерата на редовете или не-нула стойности на полетата, че избраната заявка.

* SUM - произвежда аритметична сума от всички избрани стойности на пода.

* AVG - средно всички избрани стойности на пода.

* MAX - произвежда най-големият от всички избрани стойности на пода.

* MIN - произвежда най-малката от всички избрани стойности на пода.

Как да използвате обобщаващи функции?

Обобщените функции се използват като имената на полетата в SELECT клаузата на заявката, но с едно изключение, те влизат имената на подови като аргументи. Само числови полета могат да бъдат използвани с SUM и AVG. С COUNT, MAX и MIN, може да се използва цифров или характер етаж. Когато се използва с полета характер, MAX и MIN ще ги преведат в ASCII еквивалент, което трябва да докладва, че ще отбележи първата MIN, MAX и последната стойност в азбучен ред (азбучен поръчка въпрос е разгледан по-подробно в глава 4).

За да намерите сумата на всички от нашите покупки в реда на масата, ние можем да влезем следната заявка, с неговия извод на Фигура 6.1: Фигура 6.1: Избор на размера

Това, разбира се, е различно от полето за избор, в който се връща една стойност, без значение колко реда са в таблицата. Поради това, обобщаваща функция, а подът не може да бъде избран в даден момент, докато няма да се използва ГРУПАТА доставката от (описан по-долу). Намирането на средния размер - това е подобно на действието (на изхода на тази заявка е показана на Фигура 6.2): ​​Фигура 6.2: Избор на средата

Специални характеристики COUNT

COUNT функция е малко по-различен от другите. Изследването се базира на броя на стойностите в тази колона, или на броя на редовете в таблицата. Когато установи на стойност колона, тя се използва за производство на отделен номера на сметки на различни стойности в тази област. Бихме могли да го използвате, например, да се преброят на продавачите в момента е описано в Поръчки на масата (изход е показано на фигура 6.3):

ИЗПОЛЗВАНЕ НА DISTINCT

Забележете, че в горния пример, че отделни, следвано от името на пода, на които тя се прилага, поставени в скоби, но не веднага след избиране, както преди. Това използване DISTINCT с COUNT прилага към отделни колони, призовава стандарта ANSI, но много програми не ги правят такова изискване. Фигура 6.3: Изчисляване на стойността на етаж

Можете да изберете няколко сметки (COUNT) на областта, използвайки DISTINCT в една заявка, която, както видяхме в глава 3 не се извършва, когато изберете даден ред, използвайки различни. DISTINCT може да се използва по този начин, всяка функция на устройството, но най-често се използва с преброяването. С MAX и MIN, това просто няма да има никакъв ефект, а AVG и SUM, обикновено се използват за включване на дублиращи се стойности, тъй като те са законно ефективни общите и средните стойности на всички колони.

УПОТРЕБА COUNT с линии, а не стойността

За да се изчисли общия брой на редовете в таблицата, използвайте COUNT име функция със звездичка в място на пода, като в този пример, на изхода на който е показана на Фигура 6.4: COUNT със звездичка включва NULL и дубликати важно поради тази причина не може да се използва. DISTINCT може да доведе до по-голям брой от COUNT специален етаж, който премахва всички 6. Фигура 4: Изчисляване на реда вместо ценности

линия с излишните данни или NULL в тази област. DISTINCT не е приложим в COUNT (*), тъй като тя не оказва влияние в добре развит и поддържан от базата данни. В тази база данни, не трябва да има такива линии, които биха представлявали напълно празен или дубликати (първият не съдържа никакви данни, а последният напълно излишни). Ако, от друга страна, все още има напълно празен или излишна линия, най-вероятно не искате да Скриване броя от вас тази информация.

ОБРЪЩАНЕ дубликати в обобщаващи функции

Обобщените функции могат също така (в повечето реализации) използват аргумента, ALL, която е поставена пред името на пода, като отделни, но означава точно обратното: - включва дубликати. ANSI технически не позволява то да брои, но много внедрявания релаксират това ограничение. Различията между всички и *, когато се използват с COUNT -

* Всички използва FIELDNAME като аргумент.

* Всички не могат да разчитат NULL стойности.

* Докато един аргумент, който включва нула стойности, и се използва само с COUNT; функции, различни от COUNT игнорира NULL стойности във всеки случай. Следната команда брой (COUNT) броят на не-NULL стойности в областта на рейтинг в таблицата с клиентите (включително повторения):

ПЪРВИЧНИ вграждане на скаларна експресия

Преди, който сте използвали при обобщаващи функции с единични области като аргумент. Можете да използвате и обобщаващи функции с аргументи, които се състоят от скаларна израз включва едно или повече полета. (Ако направите това, не е позволено на отделни.) Да предположим, че масата за поръчки има една колона, която съхранява предишния оставащата сума (област blnc) за всеки клиент. Трябва да се намери текущото салдо, добавянето на придобиване в размер на предходния баланс. Можете да намерите най-оставащата сума, както следва: За всеки ред от таблицата, тази заявка ще добави blnc и АМТ за този клиент и да изберете най-високата стойност, която намери. Разбира се, докато клиентите могат да имат множество поръчки, тяхното неплатени суми се оценява поотделно за всяка поръчка. Може да поръчате по-късна дата ще бъде най-големият оставащата сума. В противен случай, старата баланс трябва да бъде избран в заявката по-горе. В действителност, има голям брой ситуации в SQL където можете да използвате изрази с скаларно поле или полета вместо това, ще го видите в глава 7.

GROUP BY клауза

Групата чрез клауза позволява да определите подмножество на стойностите в дадена област от гледна точка на другия пол, и се прилагат обобщаващи функции до подмножество. Това дава възможност да се съчетаят секса и обобщаващи функции в едно изречение SELECT. Да предположим, че искате да намерите най-голямата сума на печалби, спечелени от всеки доставчик. Можете да направите отделна заявка за всеки от тях от MAX (AMT) на таблицата с поръчки за всяка стойност на секс snum. GROUP BY, обаче, да ви позволи да ги постави в една команда: Изходът за тази заявка е показан на фигура 6.5. Фигура 6.5: Намирането на максимална продажна цена за всеки продавач

ГРУПА ОТ отнася обобщени функции, независимо от редица групи се определят с помощта на стойностите на областта като цяло. В този случай, всяка група, състояща се от всички редове с една и съща стойност на snum на пода, и функцията MAX се прилагат поотделно за всяка група. Това поле стойност, до която Групата като има по дефиниция само една стойност на продукцията групата, тъй като това прави обобщена функция. Резултатът е, че позволява съвместимост единици и полета Събраните по този начин. Можете да използвате и на Групата като с няколко полета. Съвършенството горе пример по-нататък, да приемем, че искате да видите най-голямата сума на покупките, получени от всеки продавач всеки ден. За да направите това, вие трябва да се групират маса подредени по дата на продавачите и да прилага функция MAX за всяка група поотделно, като това: Изходът за тази заявка е показан на фигура 6.6. Фигура 6.6: Намирането на най-голямата сума на покупките на ден

Разбира се, празна група, в дните, когато сегашният дилър не са имали заповед да не се вижда от изхода.

клауза КАТО

Да предположим, че в предишния пример, вие бихте искали да видите само на максималния размер на покупки, чиято стойност е над $ 3000,00. Не можете да използвате обобщаващи функции в едно изречение, КЪДЕТО (ако не използвате подзаявка, описана по-късно), защото предикатите се оценяват от гледна точка на един ред, и обобщаващи функции се оценяват по отношение на групи от редове. Това означава, че не можете да направите нещо подобно: Това ще бъде отклонение от стриктното тълкуване на ANSI. За да видите максималната цена на придобиване над $ 3000,00, можете да използвате КАТО клауза. КАТО клауза определя критериите, използвани за отстраняване на определени групи от О, точно като клаузата за където тя прави за отделни линии. Правилното командата е както следва: Изходът за това искане е показан на фигура 6. 6. 7. Фигура 7: Премахване на групи обобщава данните

НЕ залепени

Стриктното тълкуване на ANSI SQL, не можете да използвате устройството на машината. Да предположим, че искате да разберете кой ден има най-висок размер на придобивания. Ако се опитате да направите това, тогава си отбор най-вероятно ще бъде отхвърлена. (Някои изпълнения не налагат това ограничение, което е предимство, тъй като вложени агрегати могат да бъдат много полезни, дори ако те са малко проблематично.) В горната команда, например, SUM е да се прилага за всяка група пол Odate и MAX за всички групи, производство на една стойност за всички групи. Въпреки това, GROUP BY клауза означава, че трябва да има един ред на изхода за всяка група секс Odate.

Сега използвате искания малко по-различно. Възможността да се получи, не просто поставете стойност, е много мощен. Това означава, че не трябва да се внимава за определена информация, ако може да се формулира заявката да го получи. Заявката ще ви даде минута по минута резултати, а масата е общо, или средните стойности ще са добри само за известно време след нейното изменение. Това не трябва да се предполага, че общите функции може напълно да замени необходимостта от проследяване на информация, като например този пример. Можете да използвате тези единици за стойностите на някои групи предлагат GROUP BY. Тези групи имат стойността на областта като цяло, и могат да се намират в другите групи, които имат стойност на поле като цяло. В същото време, все още се използва предикати да се определи кои редове от общата функция да се прилагат. Взети заедно, тези характеристики дават възможност за производство на единици на базата на много специфични подгрупи на ценности в областта. След това можете да определят други условия за изключване на определени групи резултати с предложение КАТО. Now. Когато станете експерт в голям брой от искането произвежда ценности, ние ще ви покажем в глава 7, някои неща, които можете да направите с ценностите, които тя произвежда.

С SQL

2. Напишете заявка, която ще се преброят на различни непразна ценности етаж град в таблицата с клиентите.

3. Напишете заявка, която ще избере най-ниската цена за всеки клиент.

4. Напишете заявка, която ще бъде избрана от клиента, по азбучен ред, чиито имена започват с буквата G.

5. Напишете заявка, която ще избере най-висок резултат във всеки град.

6. Напишете заявка, която ще преброи броя на клиентите, които регистрират всеки ден от техните поръчки. (Ако продавачът има повече от един ред в даден ден, то трябва да се вземе под внимание само веднъж.)