logo

Разлика између ВХЕРЕ и ХАВИНГ

Клаузуле ВХЕРЕ и ХАВИНГ су детаљно размотрене у овом чланку. Такође се користе за филтрирање записа у СКЛ упитима. Разлика између клаузуле ВХЕРЕ и ХАВИНГ је најчешће питање које се поставља током интервјуа. Главна разлика између њих је у томе што се клаузула ВХЕРЕ користи за спецификацију услова за филтрирање записа пре него што се направи било какво груписање, док се клаузула ХАВИНГ користи за спецификацију услова за филтрирање вредности из групе. Пре него што направимо поређење, прво ћемо их упознати СКЛ клаузуле.

ВХЕРЕ вс ХАВИНГ

Где клаузула

Клаузула ВХЕРЕ у МиСКЛ-у се користи са СЕЛЕЦТ, ИНСЕРТ , АЖУРИРАЊЕ , и ИЗБРИШИ упите за филтрирање података из табеле или релације. Описује специфичан услов приликом преузимања записа из једне табеле или више табела помоћу клаузуле ЈОИН. Ако је наведени услов задовољен, враћа одређену вредност из табеле. Клаузула ВХЕРЕ поставља услове на изабране колоне.

сортирана листа низова у Јави

Клаузула ВХЕРЕ у МиСКЛ такође може имплементирати логичке везе И , ИЛИ , и НЕ. Они су познати као Булов услов који мора бити истина да бисте преузели податке. Изрази логичке везе користе операторе поређења као и њихови операнди<, ,>=, =, и . Оператори поређења се обично користе за поређење стрингова и аритметичких израза.

Следећа синтакса илуструје употребу клаузуле ВХЕРЕ:

 SELECT column_lists, FROM table_name WHERE conditions GROUP BY column_lists; 

Узмимо пример да разумемо ову клаузулу. Претпоставимо да имамо табелу са именом запослених који садрже следеће податке:

ВХЕРЕ вс ХАВИНГ

Ако желимо да добијете податке о запосленом чије је радно време дуже од 9 , онда можемо користити изјаву на следећи начин:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9; 

Добићемо доњи излаз где можемо видети детаље о запосленима чије је радно време дуже од 9:

ВХЕРЕ вс ХАВИНГ

Ако користимо горњи упит са ГРУПА ОД клаузуле, добићемо другачији резултат:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9 GROUP BY name; 

Ево излаза:

ВХЕРЕ вс ХАВИНГ

ХАВИНГ клаузула

ХАВИНГ клаузула у МиСКЛ користи се заједно са ГРОУП БИ клаузула нам омогућава да наведемо услове који филтрирају које групне резултате се појављују у резултату. Враћа само оне вредности из група у коначном резултату који испуњава одређене услове. Такође можемо користити клаузулу ВХЕРЕ и ХАВИНГ заједно током селекције. У овом случају, клаузула ВХЕРЕ прво филтрира појединачне редове, затим се редови групишу, обављају збирне прорачуне и на крају клаузула ХАВИНГ филтрира групе.

Ова клаузула поставља услове за групе креиране клаузулом ГРОУП БИ. Понаша се као клаузула ВХЕРЕ када СКЛ израз не користи кључну реч ГРОУП БИ. Можемо користити агрегатне (групне) функције као што су СУМ, МИН, МАКС, АВГ и ЦОУНТ само са две клаузе: СЕЛЕЦТ и ХАВИНГ.

јава цаст инт у стринг

Следећа синтакса илуструје употребу клаузуле ХАВИНГ:

 SELECT column_lists, aggregate_function (expression) FROM table_name WHERE conditions GROUP BY column_lists HAVING condition; 

Узмимо пример да разумемо ову клаузулу. Овде разматрамо исту табелу запослених за демонстрацију.

Ако желимо да се добије укупно радно време за сваког запосленог чије је радно време дуже од 6 сати , онда можемо користити изјаву на следећи начин:

ако иначе басх
 mysql&gt; SELECT name, SUM(working_hour) AS &apos;Total working hours&apos; FROM employees GROUP BY name HAVING SUM(working_hour) &gt; 6; 

Добићемо доњи излаз где можемо видети укупно радно време сваког запосленог:

ВХЕРЕ вс ХАВИНГ

Кључне разлике између клаузуле ВХЕРЕ и ХАВИНГ

Следеће тачке објашњавају главне разлике између базе података и шеме:

  • Клаузула ВХЕРЕ филтрира појединачне редове, док клаузула ХАВИНГ филтрира групе уместо један по ред.
  • Не можемо да користимо клаузулу ВХЕРЕ са агрегатним функцијама јер ради за филтрирање појединачних редова. Насупрот томе, ХАВИНГ може да ради са агрегатним функцијама јер се користи за филтрирање група.
  • Операцијама редова рукује клаузула ВХЕРЕ, док клаузула ХАВИНГ рукује операцијама колона за сумиране редове или групе.
  • ВХЕРЕ се налази испред ГРОУП БИ, што значи филтрирање редова клаузуле ВХЕРЕ пре извођења збирних прорачуна. ХАВИНГ долази после ГРОУП БИ, што значи да клаузула ХАВИНГ филтрира редове након обављања збирних израчунавања. Сходно томе, ХАВИНГ је спорији од ВХЕРЕ у смислу ефикасности и треба га избегавати где год је то могуће.
  • Можемо комбиновати клаузулу ВХЕРЕ и ХАВИНГ заједно у упиту СЕЛЕЦТ. У овом случају, клаузула ВХЕРЕ се прво користи за филтрирање појединачних редова. Редови се затим групишу, изводе агрегатне прорачуне и коначно, клаузула ХАВИНГ се користи за филтрирање група.
  • Клаузула ВХЕРЕ преузима жељене податке на основу наведеног услова. С друге стране, клаузула ХАВИНГ прво преузима целе податке, а затим се врши раздвајање на основу наведеног услова.
  • Без наредбе СЕЛЕЦТ, не можемо користити клаузулу ХАВИНГ. Насупрот томе, можемо користити ВХЕРЕ са СЕЛЕЦТ, УПДАТЕ и ДЕЛЕТЕ наредбама.
  • ВХЕРЕ клаузула је предфилтер, док је клаузула ХАВИНГ пост-филтер.

ВХЕРЕ у односу на ХАВИНГ упоредни графикон

Следећи графикон поређења објашњава њихове главне разлике на брз начин:

Основа за поређење Где клаузула ХАВИНГ клаузула
Дефиниција Користи се за обављање филтрације на појединачним редовима. Користи се за обављање филтрације на групама.
Басиц Имплементира се у операцијама редова. Имплементира се у колонским операцијама.
Преузимање података Клаузула ВХЕРЕ преузима специфичне податке из одређених редова на основу наведеног услова Клаузула ХАВИНГ прво преузима комплетне податке. Затим их раздваја према датом услову.
Агрегатне функције Клаузула ВХЕРЕ не дозвољава рад са агрегатним функцијама. Клаузула ХАВИНГ може да ради са агрегатним функцијама.
Делује као Клаузула ВХЕРЕ служи као предфилтер. Клаузула ХАВИНГ служи као пост-филтер.
Користи се са Можемо користити клаузулу ВХЕРЕ са изразима СЕЛЕЦТ, УПДАТЕ и ДЕЛЕТЕ. Клаузула ХАВИНГ може да се користи само са наредбом СЕЛЕЦТ.
ГРУПА ОД Клаузула ГРОУП БИ долази после клаузуле ВХЕРЕ. Клаузула ГРОУП БИ долази испред клаузуле ХАВИНГ.

Закључак

У овом чланку смо направили поређење између клаузуле ВХЕРЕ и ХАВИНГ. Овде закључујемо да обе клаузуле функционишу на исти начин у филтрирању података, осим што нека додатна карактеристика чини ХАВИНГ клаузулу популарнијом. Можемо ефикасно да радимо са агрегатним функцијама у клаузули ХАВИНГ док ВХЕРЕ не дозвољава агрегатне функције.