Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
23.4 Кб
Скачать

Understanding SQL. Chapter 6. пвпвэеойе дбоощи у рпнпэша бзтезбфощи жхолгйк ч ьфпк змбче, чщ ретекдефе пф ртпуфпзп ЙУРПМШЪПЧБОЙС ЪБРТПУПЧ Л ЙЪЧМЕЮЕОЙА ЪОБЮЕОЙК ЙЪ ВБЪЩ ДБООЩИ Й ПРТЕДЕМЕОЙА, ЛБЛ ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ ЬФЙ ЪОБЮЕОЙС ЮФПВЩ РПМХЮЙФШ ЙЪ ОЙИ ЙОЖПТНБГЙА. ьФП ДЕМБЕФУС У РПНПЭША БЗТЕЗБФОЩИ ЙМЙ ПВЭЙИ ЖХОЛГЙК ЛПФПТЩЕ ВЕТХФ ЗТХРРЩ ЪОБЮЕОЙК ЙЪ РПМ Й УЧПДСФ ЙИ ДП ПДЙОПЮОПЗП ЪОБЮЕОЙС. чЩ ХЪОБЕФЕ ЛБЛ ЙУРПМШЪПЧБФШ ЬФЙ ЖХОЛГЙЙ, ЛБЛ ПРТЕДЕМЙФШ ЗТХРРЩ ЪОБЮЕОЙК Л ЛПФПТЩН ПОЙ ВХДХФ РТЙНЕОСФШУС, Й ЛБЛ ПРТЕДЕМЙФШ ЛБЛЙЕ ЗТХРРЩ ЧЩВЙТБАФУС ДМС ЧЩЧПДБ. чЩ ВХДЕФЕ ФБЛЦЕ ЧЙДЕФШ РТЙ ЛБЛЙИ ХУМПЧЙСИ ЧЩ УНПЦЕФЕ ПВЯЕДЙОЙФШ ЪОБЮЕОЙС РПМ У ЬФПК РПМХЮЕООПК ЙОЖПТНБГЙЕК Ч ПДЙОПЮОПН ЪБРТПУЕ. юфп фблпе бзтезбфоще жхолгйй ? ъБРТПУЩ НПЗХФ РТПЙЪЧПДЙФШ ПВПВЭЕООПЕ ЗТХРРПЧПЕ ЪОБЮЕОЙЕ РПМЕК ФПЮОП ФБЛЦЕ ЛБЛ Й ЪОБЮЕОЙЕ ПДОПЗП РПМ. ьФП ДЕМБЕФ У РПНПЭША БЗТЕЗБФОЩИ ЖХОЛГЙК. бЗТЕЗБФОЩЕ ЖХОЛГЙЙ РТПЙЪЧПДСФ ПДЙОПЮОПЕ ЪОБЮЕОЙЕ ДМС ЧУЕК ЗТХРРЩ ФБВМЙГЩ. йНЕЕФУС УРЙУПЛ ЬФЙИ ЖХОЛГЙК: * COUNT РТПЙЪЧПДЙФ ОПНЕТБ УФТПЛ ЙМЙ ОЕ-NULL ЪОБЮЕОЙС РПМЕК ЛПФПТЩЕ ЧЩВТБМ ЪБРТПУ. * SUM РТПЙЪЧПДЙФ БТЙЖНЕФЙЮЕУЛХА УХННХ ЧУЕИ ЧЩВТБООЩИ ЪОБЮЕОЙК ДБООПЗП РПМ. * AVG РТПЙЪЧПДЙФ ХУТЕДОЕОЙЕ ЧУЕИ ЧЩВТБООЩИ ЪОБЮЕОЙК ДБООПЗП РПМ. * MAX РТПЙЪЧПДЙФ ОБЙВПМШЫЕЕ ЙЪ ЧУЕИ ЧЩВТБООЩИ ЪОБЮЕОЙК ДБООПЗП РПМ. * MIN РТПЙЪЧПДЙФ ОБЙНЕОШЫЕЕ ЙЪ ЧУЕИ ЧЩВТБООЩИ ЪОБЮЕОЙК ДБООПЗП РПМ. лбл йурпмшъпчбфш бзтезбфоще жхолгйй ? бЗТЕЗБФОЩЕ ЖХОЛГЙЙ ЙУРПМШЪХАФУС РПДПВОП ЙНЕОБН РПМЕК Ч РТЕДМПЦЕОЙЙ SELECT ЪБРТПУБ, ОП У ПДОЙН ЙУЛМАЮЕОЙЕН, ПОЙ ВЕТХФ ЙНЕОБ РПМ ЛБЛ БТЗХНЕОФЩ. фПМШЛП ЮЙУМПЧЩЕ РПМ НПЗХФ ЙУРПМШЪПЧБФШУС У SUM Й AVG. у COUNT, MAX, Й MIN, НПЗХФ ЙУРПМШЪПЧБФШУС Й ЮЙУМПЧЩЕ ЙМЙ УЙНЧПМШОЩЕ РПМ. лПЗДБ ПОЙ ЙУРПМШЪХАФУС У УЙНЧПМШОЩНЙ РПМСНЙ, MAX Й MIN ВХДХФ ФТБОУМЙТПЧБФШ ЙИ Ч ЬЛЧЙЧБМЕОФ ASCII, ЛПФПТЩК ДПМЦЕО УППВЭБФШ, ЮФП MIN ВХДЕФ ПЪОБЮБФШ РЕТЧПЕ, Б MAX РПУМЕДОЕЕ ЪОБЮЕОЙЕ Ч БМЖБЧЙФОПН РПТСДЛЕ( ЧЩДБЮБ БМЖБЧЙФОПЗП ХРПТСДПЮЕОЙС ПВУХЦДБЕФУС ВПМЕЕ РПДТПВОП Ч зМБЧЕ 4 ). юФПВЩ ОБКФЙ SUM ЧУЕИ ОБЫЙИ РПЛХРПЛ Ч ФБВМЙГЩ рПТСДЛПЧ, НЩ НПЦЕН ЧЧЕУФЙ УМЕДХАЭЙК ЪБРТПУ, У ЕЗП ЧЩЧПДПН Ч тЙУХОЛЕ 6.1: SELECT SUM ((amt)) FROM Orders; =============== SQL Execution Log ============ | | | SELECT SUM (amt) | | FROM Orders; | | ==============================================| | | | ------- | | 26658.4 | | | | | =============================================== тЙУХОПЛ 6.1: чЩВПТ УХННЩ ьФП ЛПОЕЮОП, ПФМЙЮБЕФУС ПФ ЧЩВПТБ РПМ РТЙ ЛПФПТПН ЧПЪЧТБЭБЕФУС ПДЙОПЮОПЕ ЪОБЮЕОЙЕ, ОЕЪБЧЙУЙНП ПФ ФПЗП УЛПМШЛП УФТПЛ ОБИПДЙФУС Ч ФБВМЙГЕ. йЪ-ЪБ ЬФПЗП, БЗТЕЗБФОЩЕ ЖХОЛГЙЙ Й РПМ ОЕ НПЗХФ ЧЩВЙТБФШУС ПДОПЧТЕНЕООП, РПЛБ РТЕДМПЦЕОЙЕ GROUP BY (ПРЙУБООПЕ ДБМЕЕ) ОЕ ВХДЕФ ЙУРПМШЪПЧБОП. оБИПЦДЕОЙЕ ХУТЕДОЕООПК УХННЩ - ЬФП РПИПЦБ ПРЕТБГЙС ( ЧЩЧПД УМЕДХАЭЕЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.2 ): SELECT AVG (amt) FROM Orders; =============== SQL Execution Log ============ | | | SELECT AVG (amt) | | FROM Orders; | | ==============================================| | | | ------- | | 2665.84 | | | | | =============================================== тЙУХОПЛ 6.2: чЩВПТ УТЕДОЕЗП урегйбмшоще бфтйвхфщ COUNT жХОЛГЙС COUNT ОЕУЛПМШЛП ПФМЙЮБЕФУС ПФ ЧУЕИ. пОБ УЮЙФБЕФ ЮЙУМП ЪОБЮЕОЙК Ч ДБООПН УФПМВГЕ, ЙМЙ ЮЙУМП УФТПЛ Ч ФБВМЙГЕ. лПЗДБ ПОБ УЮЙФБЕФ ЪОБЮЕОЙС УФПМВГБ, ПОБ ЙУРПМШЪХЕФУС У DISTINCT ЮФПВЩ РТПЙЪЧПДЙФШ УЮЕФ ЮЙУЕМ ТБЪМЙЮОЩИ ЪОБЮЕОЙК Ч ДБООПН РПМЕ. нЩ НПЗМЙ ВЩ ЙУРПМШЪПЧБФШ ЕЕ, ОБРТЙНЕТ, ЮФПВЩ УПУЮЙФБФШ ОПНЕТБ РТПДБЧГПЧ Ч ОБУФПСЭЕЕ ЧТЕН ПРЙУБООЩИ Ч ФБВМЙГЕ рПТСДЛПЧ ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.3 ): SELECT COUNT ( DISTINCT snum ) FROM Orders; йурпмшъпчбойе DISTINCT пВТБФЙФЕ ЧОЙНБОЙЕ Ч ЧЩЫЕХРПНСОХФПН РТЙНЕТЕ, ЮФП DISTINCT, УПРТПЧПЦДБЕНЩК ЙНЕОЕН РПМ У ЛПФПТЩН ПО РТЙНЕОСЕФУС, РПНЕЭЕО Ч ЛТХЗМЩЕ УЛПВЛЙ, ОП ОЕ УТБЪХ РПУМЕ SELECT, ЛБЛ ТБОШЫЕ. ьФПЗП ЙУРПМШЪПЧБОЙС DISTINCT У COUNT РТЙНЕОСЕНПЗП Л ЙОДЙЧЙДХБМШОЩН УФПМВГБН, ФТЕВХЕФ УФБОДБТФ ANSI, ОП ВПМШЫПЕ ЛПМЙЮЕУФЧП РТПЗТБНН ОЕ РТЕДЯСЧМСАФ Л ОЙН ФБЛПЗП ФТЕВПЧБОЙС. =============== SQL Execution Log ============ | | | SELECT COUNT (DISTINCT snum) | | FROM Orders; | | ==============================================| | | | ------- | | 5 | | | | | =============================================== тЙУХОПЛ 6.3: рПДУЮЕФ ЪОБЮЕОЙК РПМ чЩ НПЦЕФЕ ЧЩВЙТБФШ НОПЗПЮЙУМЕООЩЕ УЮЕФБ( COUNT ) ЙЪ РПМЕК У РПНПЭША DISTINCT Ч ПДЙОПЮОПН ЪБРТПУЕ ЛПФПТЩК, ЛБЛ НЩ ЧЙДЕМЙ Ч зМБЧЕ 3, ОЕ ЧЩРПМОСМЙУШ ЛПЗДБ ЧЩ ЧЩВЙТБМЙ УФТПЛЙ У РПНПЭША DISTINCT. DISTINCT НПЦЕФ ЙУРПМШЪПЧБФШУС ФБЛЙН ПВТБЪПН, У МАВПК ЖХОЛГЙЕК БЗТЕЗБФБ, ОП ОБЙВПМЕЕ ЮБУФП ПО ЙУРПМШЪХЕФУС У COUNT. у MAX Й MIN, ЬФП РТПУФП ОЕ ВХДЕФ ЙНЕФШ ОЙЛБЛПЗП ЬЖЖЕЛФБ, Б SUM Й AVG, ЧЩ ПВЩЮОП РТЙНЕОСЕФЕ ДМС ЧЛМАЮЕОЙС РПЧФПТСЕНЩИ ЪОБЮЕОЙК, ФБЛ ЛБЛ ПОЙ ЪБЛПООП ЬЖЖЕЛФЙЧОЕЕ ПВЭЙИ Й УТЕДОЙИ ЪОБЮЕОЙК ЧУЕИ УФПМВГПЧ. йурпмшъпчбойе COUNT уп уфтплбнй, б ое ъобюеойснй юФПВЩ РПДУЮЙФБФШ ПВЭЕЕ ЮЙУМП УФТПЛ Ч ФБВМЙГЕ, ЙУРПМШЪХКФЕ ЖХОЛГЙА COUNT УП ЪЧЕЪДПЮЛПК ЧНЕУФП ЙНЕОЙ РПМ, ЛБЛ ОБРТЙНЕТ Ч УМЕДХАЭЕН РТЙНЕТЕ, ЧЩЧПД ЙЪ ЛПФПТПЗП РПЛБЪБО ОБ тЙУХОЛЕ 6.4: SELECT COUNT (*) FROM Customers COUNT УП ЪЧЕЪДПЮЛПК ЧЛМАЮБЕФ Й NULL Й ДХВМЙЛБФЩ, РП ЬФПК РТЙЮЙОЕ DISTINCT ОЕ НПЦЕФ ВЩФШ ЙУРПМШЪПЧБО. DISTINCT НПЦЕФ РТПЙЪЧПДЙФШ ВПМЕЕ ЧЩУПЛЙЕ ОПНЕТБ ЮЕН COUNT ПУПВПЗП РПМ, ЛПФПТЩК ХДБМСЕФ ЧУЕ =============== SQL Execution Log ============ | | | SELECT COUNT (*) | | FROM Customers; | | ==============================================| | | | ------- | | 7 | | | | | =============================================== тЙУХОПЛ 6. 4: рПДУЮЕФ УФТПЛ ЧНЕУФП ЪОБЮЕОЙК УФТПЛЙ, ЙНЕАЭЙЕ ЙЪВЩФПЮОЩЕ ЙМЙ NULL ДБООЩЕ Ч ЬФПН РПМЕ. DISTINCT ОЕ РТЙНЕОЙН c COUNT (*), РПФПНХ, ЮФП ПО ОЕ ЙНЕЕФ ОЙЛБЛПЗП ДЕКУФЧЙС Ч ИПТПЫП ТБЪТБВПФБООПК Й РПДДЕТЦЙЧБЕНПК ВБЪЕ ДБООЩИ. ч ФБЛПК ВБЪЕ ДБООЩИ, ОЕ ДПМЦОП ВЩФШ ОЙ ФБЛЙИ УФТПЛ, ЛПФПТЩЕ ВЩ СЧМСМЙУШ РПМОПУФША РХУФЩНЙ, ОЙ ДХВМЙЛБФПЧ ( РЕТЧЩЕ ОЕ УПДЕТЦБФ ОЙЛБЛЙИ ДБООЩИ, Б РПУМЕДОЙЕ РПМОПУФША ЙЪВЩФПЮОЩ ). еУМЙ, У ДТХЗПК УФПТПОЩ, ЧУЕ ФБЛЙ ЙНЕАФУС РПМОПУФША РХУФЩЕ ЙМЙ ЙЪВЩФПЮОЩЕ УФТПЛЙ, ЧЩ ЧЕТПСФОП ОЕ ЪБИПФЙФЕ ЮФПВЩ COUNT УЛТЩМ ПФ ЧБУ ЬФХ ЙОЖПТНБГЙА. члмаюеойе дхвмйлбфпч ч бзтезбфоще жхолгйй бЗТЕЗБФОЩЕ ЖХОЛГЙЙ НПЗХФ ФБЛЦЕ ( Ч ВПМШЫЙОУФЧЕ ТЕБМЙЪБГЙК ) ЙУРПМШЪПЧБФШ БТЗХНЕОФ ALL, ЛПФПТЩК РПНЕЭБЕФУС РЕТЕД ЙНЕОЕН РПМ, РПДПВОП DISTINCT, ОП ПЪОБЮБЕФ РТПФЙЧПРПМПЦОПЕ: - ЧЛМАЮБФШ ДХВМЙЛБФЩ. ANSI ФЕИОЙЮЕУЛЙ ОЕ РПЪЧПМСЕФ ЬФПЗП ДМС COUNT, ОП НОПЗЙЕ ТЕБМЙЪБГЙЙ ПУМБВМСАФ ЬФП ПЗТБОЙЮЕОЙЕ. тБЪМЙЮЙ НЕЦДХ ALL Й * ЛПЗДБ ПОЙ ЙУРПМШЪХАФУС У COUNT - * ALL ЙУРПМШЪХЕФ ЙНС_РПМС ЛБЛ БТЗХНЕОФ. * ALL ОЕ НПЦЕФ РПДУЮЙФБФШ ЪОБЮЕОЙС NULL. рПЛБ * СЧМСЕФУС ЕДЙОУФЧЕООЩН БТЗХНЕОФПН ЛПФПТЩК ЧЛМАЮБЕФ NULL ЪОБЮЕОЙС, Й ПО ЙУРПМШЪХЕФУС ФПМШЛП У COUNT; ЖХОЛГЙЙ ПФМЙЮОЩЕ ПФ COUNT ЙЗОПТЙТХАФ ЪОБЮЕОЙС NULL Ч МАВПН УМХЮБЕ. уМЕДХАЭБС ЛПНБОДБ РПДУЮЙФБЕФ(COUNT) ЮЙУМП ОЕ-NULL ЪОБЮЕОЙК Ч РПМЕ rating Ч ФБВМЙГЕ ъБЛБЪЮЙЛПЧ ( ЧЛМАЮБС РПЧФПТЕОЙС ): SELECT COUNT ( ALL rating ) FROM Customers; бзтезбфщ рпуфтпеооще об улбмстопн чщтбцеойй дП ЬФПЗП, ЧЩ ЙУРПМШЪПЧБМЙ БЗТЕЗБФОЩЕ ЖХОЛГЙЙ У ПДЙОПЮОЩНЙ РПМСНЙ ЛБЛ БТЗХНЕОФБНЙ. чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ БЗТЕЗБФОЩЕ ЖХОЛГЙЙ У БТЗХНЕОФБНЙ ЛПФПТЩЕ УПУФПСФ ЙЪ УЛБМСТОЩИ ЧЩТБЦЕОЙК ЧЛМАЮБАЭЙИ ПДОП ЙМЙ ВПМЕЕ РПМЕК. ( еУМЙ ЧЩ ЬФП ДЕМБЕФЕ, DISTINCT ОЕ ТБЪТЕЫБЕФУС. ) рТЕДРПМПЦЙН, ЮФП ФБВМЙГБ рПТСДЛПЧ ЙНЕЕФ ЕЭЕ ПДЙО УФПМВЕГ ЛПФПТЩК ИТБОЙФ РТЕДЩДХЭЙК ОЕХРМБЮЕООЩК ВБМБОУ (РПМЕ blnc) ДМС ЛБЦДПЗП ЪБЛБЪЮЙЛБ. чЩ ДПМЦОЩ ОБКФЙ ЬФПФ ФЕЛХЭЙК ВБМБОУ, ДПВБЧМЕОЙЕН УХННЩ РТЙПВТЕФЕОЙК Л РТЕДЩДХЭЕНХ ВБМБОУХ. чЩ НПЦЕФЕ ОБКФЙ ОБЙВПМШЫЙК ОЕХРМБЮЕООЩК ВБМБОУ УМЕДХАЭЙН ПВТБЪПН: SELECT MAX ( blnc + (amt) ) FROM Orders; дМС ЛБЦДПК УФТПЛЙ ФБВМЙГЩ, ЬФПФ ЪБРТПУ ВХДЕФ УЛМБДЩЧБФШ blnc Й amt ДМС ЬФПЗП ЪБЛБЪЮЙЛБ Й ЧЩВЙТБФШ УБНПЕ ВПМШЫПЕ ЪОБЮЕОЙЕ ЛПФПТПЕ ПО ОБКДЕФ. лПОЕЮОП, РПЛБ ЪБЛБЪЮЙЛЙ НПЗХФ ЙНЕФШ НОПЗПЮЙУМЕООЩЕ РПТСДЛЙ, ЙИ ОЕХРМБЮЕООЩК ВБМБОУ ПГЕОЙЧБЕФУС ПФДЕМШОП ДМС ЛБЦДПЗП РПТСДЛБ. чПЪНПЦОП, РПТСДПЛ У ВПМЕЕ РПЪДОЕК ДБФПК ВХДЕФ ЙНЕФШ УБНЩК ВПМШЫПК ОЕХРМБЮЕООЩК ВБМБОУ. йОБЮЕ, УФБТЩК ВБМБОУ ДПМЦЕО ВЩФШ ЧЩВТБО ЛБЛ Ч ЪБРТПУЕ ЧЩЫЕ. жБЛФЙЮЕУЛЙ, ЙНЕАФУС ВПМШЫПЕ ЛПМЙЮЕУФЧП УЙФХБГЙК Ч SQL ЗДЕ ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ УЛБМСТОЩЕ ЧЩТБЦЕОЙС У РПМСНЙ ЙМЙ ЧНЕУФП РПМЕК, ЛБЛ ЧЩ ХЧЙДЙФЕ ЬФП Ч зМБЧЕ 7. ртедмпцеойе GROUP BY рТЕДМПЦЕОЙЕ GROUP BY РПЪЧПМСЕФ ЧБН ПРТЕДЕМСФШ РПДНОПЦЕУФЧП ЪОБЮЕОЙК Ч ПУПВПН РПМЕ Ч ФЕТНЙОБИ ДТХЗПЗП РПМ, Й РТЙНЕОСФШ ЖХОЛГЙА БЗТЕЗБФБ Л РПДНОПЦЕУФЧХ. ьФП ДБЕФ ЧБН ЧПЪНПЦОПУФШ ПВЯЕДЙОСФШ РПМ Й БЗТЕЗБФОЩЕ ЖХОЛГЙЙ Ч ЕДЙОПН РТЕДМПЦЕОЙЙ SELECT. оБРТЙНЕТ, РТЕДРПМПЦЙН ЮФП ЧЩ ИПФЙФЕ ОБКФЙ ОБЙВПМШЫХА УХННХ РТЙПВТЕФЕОЙК РПМХЮЕООХА ЛБЦДЩН РТПДБЧГПН. чЩ НПЦЕФЕ УДЕМБФШ ТБЪДЕМШОЩК ЪБРТПУ ДМС ЛБЦДПЗП ЙЪ ОЙИ, ЧЩВТБЧ MAX (amt) ЙЪ ФБВМЙГЩ рПТСДЛПЧ ДМС ЛБЦДПЗП ЪОБЮЕОЙС РПМ snum. GROUP BY, ПДОБЛП, РПЪЧПМЙФ чБН РПНЕУФЙФШ ЙИ ЧУЕ Ч ПДОХ ЛПНБОДХ: SELECT snum, MAX (amt) FROM Orders GROUP BY snum; чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.5. =============== SQL Execution Log ============== | | | SELECT snum, MAX (amt) | | FROM Orders | | GROUP BY snum; | | =============================================== | | snum | | ------ -------- | | 1001 767.19 | | 1002 1713.23 | | 1003 75.75 | | 1014 1309.95 | | 1007 1098.16 | | | ================================================ тЙУХОПЛ 6.5: оБИПЦДЕОЙЕ НБЛУЙНБМШОПК УХННЩ РТПДБЦЙ Х ЛБЦДПЗП РТПДБЧГБ GROUP BY РТЙНЕОСЕФ БЗТЕЗБФОЩЕ ЖХОЛГЙЙ ОЕЪБЧЙУЙНП ПФ УЕТЙК ЗТХРР ЛПФПТЩЕ ПРТЕДЕМСАФУС У РПНПЭША ЪОБЮЕОЙС РПМС Ч ГЕМПН. ч ЬФПН УМХЮБЕ, ЛБЦДБС ЗТХРРБ УПУФПЙФ ЙЪ ЧУЕИ УФТПЛ У ФЕН ЦЕ УБНЩН ЪОБЮЕОЙЕН РПМ snum, Й MAX ЖХОЛГЙС РТЙНЕОСЕФУС ПФДЕМШОП ДМС ЛБЦДПК ФБЛПК ЗТХРРЩ. ьФП ЪОБЮЕОЙЕ РПМ, Л ЛПФПТПНХ РТЙНЕОСЕФУС GROUP BY, ЙНЕЕФ, РП ПРТЕДЕМЕОЙА, ФПМШЛП ПДОП ЪОБЮЕОЙЕ ОБ ЗТХРРХ ЧЩЧПДБ, ФБЛЦЕ ЛБЛ ЬФП ДЕМБЕФ БЗТЕЗБФОБС ЖХОЛГЙС. тЕЪХМШФБФПН СЧМСЕФУС УПЧНЕУФЙНПУФШ ЛПФПТБС РПЪЧПМСЕФ БЗТЕЗБФБН Й РПМСН ПВЯЕДЙОСФШУС ФБЛЙН ПВТБЪПН. чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ GROUP BY У НОПЗПЮЙУМЕООЩНЙ РПМСНЙ. уПЧЕТЫЕОУФЧХ ЧЩЫЕХРПНСОХФЩК РТЙНЕТ ДБМЕЕ, РТЕДРПМПЦЙН ЮФП ЧЩ ИПФЙФЕ ХЧЙДЕФШ ОБЙВПМШЫХА УХННХ РТЙПВТЕФЕОЙК РПМХЮБЕНХА ЛБЦДЩН РТПДБЧГПН ЛБЦДЩК ДЕОШ. юФПВЩ УДЕМБФШ ЬФП, ЧЩ ДПМЦОЩ УЗТХРРЙТПЧБФШ ФБВМЙГХ рПТСДЛПЧ РП ДБФБН РТПДБЧГПЧ, Й РТЙНЕОЙФШ ЖХОЛГЙА MAX Л ЛБЦДПК ФБЛПК ЗТХРРЕ, РПДПВОП ЬФПНХ: SELECT snum, odate, MAX ((amt)) FROM Orders GROUP BY snum, odate; чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.6. =============== SQL Execution Log ============== | | | SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate; | | =============================================== | | snum odate | | ------ ---------- -------- | | 1001 10/03/1990 767.19 | | 1001 10/05/1990 4723.00 | | 1001 10/06/1990 9891.88 | | 1002 10/03/1990 5160.45 | | 1002 10/04/1990 75.75 | | 1002 10/06/1990 1309.95 | | 1003 10/04/1990 1713.23 | | 1014 10/03/1990 1900.10 | | 1007 10/03/1990 1098.16 | | | ================================================ тЙУХОПЛ 6.6: оБИПЦДЕОЙЕ ОБЙВПМШЫЕК УХННЩ РТЙПВТЕФЕОЙК ОБ ЛБЦДЩК ДЕОШ лПОЕЮОП ЦЕ, РХУФЩЕ ЗТХРРЩ, Ч ДОЙ ЛПЗДБ ФЕЛХЭЙК РТПДБЧЕГ ОЕ ЙНЕМ РПТСДЛПЧ, ОЕ ВХДХФ РПЛБЪБОЩ Ч ЧЩЧПДЕ. ртедмпцеойе HAVING рТЕДРПМПЦЙН, ЮФП Ч РТЕДЩДХЭЕН РТЙНЕТЕ, ЧЩ ИПФЕМЙ ВЩ ХЧЙДЕФШ ФПМШЛП НБЛУЙНБМШОХА УХННХ РТЙПВТЕФЕОЙК ЪОБЮЕОЙЕ ЛПФПТПК ЧЩЫЕ $3000.00. чЩ ОЕ УНПЦЕФЕ ЙУРПМШЪПЧБФШ БЗТЕЗБФОХА ЖХОЛГЙА Ч РТЕДМПЦЕОЙЙ WHERE ( ЕУМЙ ЧЩ ОЕ ЙУРПМШЪХЕФЕ РПДЪБРТПУ, ПРЙУБООЩК РПЪЦЕ ), РПФПНХ ЮФП РТЕДЙЛБФЩ ПГЕОЙЧБАФУС Ч ФЕТНЙОБИ ПДЙОПЮОПК УФТПЛЙ, Б БЗТЕЗБФОЩЕ ЖХОЛГЙЙ ПГЕОЙЧБАФУС Ч ФЕТНЙОБИ ЗТХРР УФТПЛ. ьФП ПЪОБЮБЕФ ЮФП ЧЩ ОЕ УНПЦЕФЕ УДЕМБФШ ЮФП-ОЙВХДШ РПДПВОП УМЕДХАЭЕНХ: SELECT snum, odate, MAX (amt) FROM Oreders WHERE MAX ((amt)) > 3000.00 GROUP BY snum, odate; ьФП ВХДЕФ ПФЛМПОЕОЙЕН ПФ УФТПЗПК ЙОФЕТРТЕФБГЙЙ ANSI. юФПВЩ ХЧЙДЕФШ НБЛУЙНБМШОХА УФПЙНПУФШ РТЙПВТЕФЕОЙК УЧЩЫЕ $3000.00, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ РТЕДМПЦЕОЙЕ HAVING. рТЕДМПЦЕОЙЕ HAVING ПРТЕДЕМСЕФ ЛТЙФЕТЙЙ ЙУРПМШЪХЕНЩЕ ЮФПВЩ ХДБМСФШ ПРТЕДЕМЕООЩЕ ЗТХРРЩ ЙЪ ЧЩЧПДБ, ФПЮОП ФБЛЦЕ ЛБЛ РТЕДМПЦЕОЙЕ WHERE ДЕМБЕФ ЬФП ДМС ЙОДЙЧЙДХБМШОЩИ УФТПЛ. рТБЧЙМШОПК ЛПНБОДПК ВХДЕФ УМЕДХАЭБС: SELECT snum, odate, MAX ((amt)) FROM Orders GROUP BY snum, odate HAVING MAX ((amt)) > 3000.00; чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6. 7. =============== SQL Execution Log ============== | | | SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate | | HAVING MAX (amt) > 3000.00; | | =============================================== | | snum odate | | ------ ---------- -------- | | 1001 10/05/1990 4723.00 | | 1001 10/06/1990 9891.88 | | 1002 10/03/1990 5160.45 | | | ================================================ тЙУХОПЛ 6. 7: хДБМЕОЙЕ ЗТХРР БЗТЕЗБФОЩИ ЪОБЮЕОЙК бТЗХНЕОФЩ Ч РТЕДМПЦЕОЙЙ HAVING УМЕДХАФ ФЕН ЦЕ УБНЩН РТБЧЙМБН ЮФП Й Ч РТЕДМПЦЕОЙЙ SELECT, УПУФПСЭЕК ЙЪ ЛПНБОД ЙУРПМШЪХАЭЙИ GROUP BY. пОЙ ДПМЦОЩ ЙНЕФШ ПДОП ЪОБЮЕОЙЕ ОБ ЗТХРРХ ЧЩЧПДБ. уМЕДХАЭБС ЛПНБОДБ ВХДЕФ ЪБРТЕЭЕОБ: SELECT snum, MAX (amt) FROM Orders GROUP BY snum HAVING odate = 10/03/1988; рПМЕ Пdate ОЕ НПЦЕФ ВЩФШ ЧЩЪЧБОП РТЕДМПЦЕОЙЕН HAVING, РПФПНХ ЮФП ПОП НПЦЕФ ЙНЕФШ ( Й ДЕКУФЧЙФЕМШОП ЙНЕЕФ ) ВПМШЫЕ ЮЕН ПДОП ЪОБЮЕОЙЕ ОБ ЗТХРРХ ЧЩЧПДБ. юФПВЩ ЙЪВЕЗБФШ ФБЛПК УЙФХБГЙЙ, РТЕДМПЦЕОЙЕ HAVING ДПМЦОП УУЩМБФШУС ФПМШЛП ОБ БЗТЕЗБФЩ Й РПМС ЧЩВТБООЩЕ GROUP BY. йНЕЕФУС РТБЧЙМШОЩК УРПУПВ УДЕМБФШ ЧЩЫЕХРПНСОХФЩК ЪБРТПУ( ЧЩЧПД РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.8 ): SELECT snum, MAX (amt) FROM Orders WHEREodate = 10/03/1990 GROUP BY snum; =============== SQL Execution Log ============== | | | SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate; | | =============================================== | | snum | | ------ -------- | | 1001 767.19 | | 1002 5160.45 | | 1014 1900.10 | | 1007 1098.16 | | | ================================================ тЙУХОПЛ 6.8: нБЛУЙНБМШОПЕ ЪОБЮЕОЙЕ УХННЩ РТЙПВТЕФЕОЙК Х ЛБЦДПЗП РТПДБЧГБ ОБ 3 пЛФСВТС рПУЛПМШЛХ РПМ odate ОЕФ, ОЕ НПЦЕФ ВЩФШ Й ЧЩВТБООЩИ РПМЕК, ЪОБЮЕОЙЕ ЬФЙИ ДБООЩИ НЕОШЫЕ ЮЕН Ч ОЕЛПФПТЩИ ДТХЗЙИ РТЙНЕТБИ. чЩЧПД ДПМЦЕО ЧЕТПСФОП ЧЛМАЮБФШ ЮФП-ОЙВХДШ ФБЛПЕ ЮФП ЗПЧПТЙФ - " ЬФП - УБНЩЕ ВПМШЫЙЕ РПТСДЛЙ ОБ 3 пЛФСВТС." ч зМБЧЕ 7, НЩ РПЛБЦЕН ЛБЛ ЧУФБЧМСФШ ФЕЛУФ Ч ЧБЫ ЧЩЧПД. лБЛ Й ЗПЧПТЙМПУШ ТБОЕЕ, HAVING НПЦЕФ ЙУРПМШЪПЧБФШ ФПМШЛП БТЗХНЕОФЩ ЛПФПТЩЕ ЙНЕАФ ПДОП ЪОБЮЕОЙЕ ОБ ЗТХРРХ ЧЩЧПДБ. рТБЛФЙЮЕУЛЙ, УУЩМЛЙ ОБ БЗТЕЗБФОЩЕ ЖХОЛГЙЙ - ОБЙВПМЕЕ ПВЭЙЕ, ОП Й РПМ ЧЩВТБООЩЕ У РПНПЭША GROUP BY ФБЛЦЕ ДПРХУФЙНЩ. оБРТЙНЕТ, НЩ ИПФЙН ХЧЙДЕФШ ОБЙВПМШЫЙЕ РПТСДЛЙ ДМС Serres Й Rifkin: SELECT snum, MAX (amt) FROM Orders GROUP BY snum HAVING snum B (1002,1007); чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 6.9. =============== SQL Execution Log ============== | | | SELECT snum, MAX (amt) | | FROM Orders | | GROUP BY snum | | HAVING snum IN ( 1002, 1007 ); | | =============================================== | | snum | | ------ -------- | | 1002 5160.45 | | 1007 1098.16 | | | ================================================ тЙУХОПЛ 6. 9: йУРПМШЪПЧБОЙЕ HAVING У GROUP BY РПМСНЙ ое дембкфе чмпцеоощи бзтезбфпч ч УФТПЗПК ЙОФЕТРТЕФБГЙЙ ANSI SQL, ЧЩ ОЕ НПЦЕФЕ ЙУРПМШЪПЧБФШ БЗТЕЗБФ БЗТЕЗБФБ. рТЕДРПМПЦЙН ЮФП ЧЩ ИПФЙФЕ ЧЩСУОЙФШ, Ч ЛБЛПК ДЕОШ ЙНЕМБУШ ОБЙВПМШЫБС УХННБ РТЙПВТЕФЕОЙК. еУМЙ ЧЩ РПРТПВХЕФЕ УДЕМБФШ ЬФП, SELECT odate, MAX ( SUM (amt) ) FROM Orders GROUP BY odate; ФП ЧБЫБ ЛПНБОДБ ВХДЕФ ЧЕТПСФОП ПФЛМПОЕОБ. ( оЕЛПФПТЩЕ ТЕБМЙЪБГЙЙ ОЕ РТЕДРЙУЩЧБАФ ЬФПЗП ПЗТБОЙЮЕОЙС, ЛПФПТПЕ СЧМСЕФУС ЧЩЗПДОЩН, РПФПНХ ЮФП ЧМПЦЕООЩЕ БЗТЕЗБФЩ НПЗХФ ВЩФШ ПЮЕОШ РПМЕЪОЩ, ДБЦЕ ЕУМЙ ПОЙ Й ОЕУЛПМШЛП РТПВМЕНБФЙЮОЩ.) ч ЧЩЫЕХРПНСОХФПК ЛПНБОДЕ, ОБРТЙНЕТ, SUM ДПМЦЕО РТЙНЕОСФШУС Л ЛБЦДПК ЗТХРРЕ РПМ odate, Б MAX ЛП ЧУЕН ЗТХРРБН, РТПЙЪЧПДСЭЙН ПДЙОПЮОПЕ ЪОБЮЕОЙЕ ДМС ЧУЕИ ЗТХРР. пДОБЛП РТЕДМПЦЕОЙЕ GROUP BY РПДТБЪХНЕЧБЕФ ЮФП ДПМЦОБ ЙНЕФШУС ПДОБ УФТПЛБ ЧЩЧПДБ ДМС ЛБЦДПК ЗТХРРЩ РПМ odate. теъане фЕРЕТШ ЧЩ ЙУРПМШЪХЕФЕ ЪБРТПУЩ ОЕУЛПМШЛП РП-ДТХЗПНХ. уРПУПВОПУФШ РПМХЮБФШ, Б ОЕ РТПУФП ТБЪНЕЭБФШ ЪОБЮЕОЙС, ПЮЕОШ НПЭОБ. ьФП ПЪОБЮБЕФ ЮФП ЧЩ ОЕ ПВСЪБФЕМШОП ДПМЦОЩ УМЕДЙФШ ЪБ ПРТЕДЕМЕООПК ЙОЖПТНБГЙЕК ЕУМЙ ЧЩ НПЦЕФЕ УЖПТНХМЙТПЧБФШ ЪБРТПУ ФБЛ ЮФПВЩ ЕЕ РПМХЮЙФШ. ъБРТПУ ВХДЕФ ДБЧБФШ ЧБН РПНЙОХФОЩЕ ТЕЪХМШФБФЩ, Ч ФП ЧТЕН ЛБЛ ФБВМЙГБ ПВЭЕЗП ЙМЙ УТЕДОЕЗП ЪОБЮЕОЙК ВХДЕФ ИПТПЫБ ФПМШЛП ОЕЛПФПТПЕ ЧТЕН РПУМЕ ЕЕ НПДЙЖЙЛБГЙЙ. ьФП ОЕ ДПМЦОП ОБЧПДЙФШ ОБ НЩУМШ, ЮФП БЗТЕЗБФОЩЕ ЖХОЛГЙЙ НПЗХФ РПМОПУФША ЧЩФЕУОЙФШ РПФТЕВОПУФШ Ч ПФУМЕЦЙЧБОЙЙ ЙОЖПТНБГЙЙ ФБЛПК ОБРТЙНЕТ ЛБЛ ЬФБ. чЩ НПЦЕФЕ РТЙНЕОСФШ ЬФЙ БЗТЕЗБФЩ ДМС ЗТХРР ЪОБЮЕОЙК ПРТЕДЕМЕООЩИ РТЕДМПЦЕОЙЕН GROUP BY. ьФЙ ЗТХРРЩ ЙНЕАФ ЪОБЮЕОЙЕ РПМС Ч ГЕМПН, Й НПЗХФ РПУФПСООП ОБИПДЙФШУС ЧОХФТЙ ДТХЗЙИ ЗТХРР ЛПФПТЩЕ ЙНЕАФ ЪОБЮЕОЙЕ РПМС Ч ГЕМПН. ч ФП ЦЕ ЧТЕНС, РТЕДЙЛБФЩ ЕЭЕ ЙУРПМШЪХАФУС ЮФПВЩ ПРТЕДЕМСФШ ЛБЛЙЕ УФТПЛЙ БЗТЕЗБФОПК ЖХОЛГЙЙ РТЙНЕОСАФУС. пВЯЕДЙОЕООЩЕ ЧНЕУФЕ, ЬФЙ ПУПВЕООПУФЙ ДЕМБАФ ЧПЪНПЦОЩН, РТПЙЪЧПДЙФШ БЗТЕЗБФЩ ПУОПЧБООЩЕ ОБ УЙМШОП ПРТЕДЕМЕООЩИ РПДНОПЦЕУФЧБИ ЪОБЮЕОЙК Ч РПМЕ. ъБФЕН ЧЩ НПЦЕФЕ ПРТЕДЕМСФШ ДТХЗПЕ ХУМПЧЙЕ ДМС ЙУЛМАЮЕОЙС ПРТЕДЕМЕООЩИ ТЕЪХМШФБФПЧ ЗТХРР У РТЕДМПЦЕОЙЕН HAVING. фЕРЕТШ , ЛПЗДБ ЧЩ УФБМЙ ЪОБФПЛПН ВПМШЫПЗП ЛПМЙЮЕУФЧБ ФПЗП ЛБЛ ЪБРТПУ РТПЙЪЧПДЙФ ЪОБЮЕОЙС, НЩ РПЛБЦЕН ЧБН, Ч зМБЧЕ 7, ОЕЛПФПТЩЕ ЧЕЭЙ ЛПФПТЩЕ ЧЩ НПЦЕФЕ ДЕМБФШ УП ЪОБЮЕОЙСНЙ ЛПФПТЩЕ ПО РТПЙЪЧПДЙФ. тбвпфб у SQL 1. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК УПУЮЙФБМ ВЩ ЧУЕ УХННЩ РТЙПВТЕФЕОЙК ОБ 3 пЛФСВТС. 2. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК УПУЮЙФБМ ВЩ ЮЙУМП ТБЪМЙЮОЩИ ОЕ-NULL ЪОБЮЕОЙК РПМ city Ч ФБВМЙГЕ ъБЛБЪЮЙЛПЧ. 3. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК ЧЩВТБМ ВЩ ОБЙНЕОШЫХА УХННХ ДМС ЛБЦДПЗП ЪБЛБЪЮЙЛБ. 4. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК ВЩ ЧЩВЙТБМ ЪБЛБЪЮЙЛПЧ Ч БМЖБЧЙФОПН РПТСДЛЕ, ЮШЙ ЙНЕОБ ОБЮЙОБАФУС У ВХЛЧЩ G. 5. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК ЧЩВТБМ ВЩ ЧЩУЫХА ПГЕОЛХ Ч ЛБЦДПН ЗПТПДЕ. 6. оБРЙЫЙФЕ ЪБРТПУ ЛПФПТЩК УПУЮЙФБМ ВЩ ЮЙУМП ЪБЛБЪЮЙЛПЧ ТЕЗЙУФТЙТХАЭЙИ ЛБЦДЩК ДЕОШ УЧПЙ РПТСДЛЙ. (еУМЙ РТПДБЧЕГ ЙНЕМ ВПМЕЕ ПДОПЗП РПТСДЛБ Ч ДБООЩК ДЕОШ, ПО ДПМЦЕО ХЮЙФЩЧБФШУС ФПМШЛП ПДЙО ТБЪ.) (уН. рТЙМПЦЕОЙЕ A ДМС ПФЧЕФПЧ.)

Соседние файлы в папке Understanding SQL (rus - html)