Суочавање са дуплираним вредностима у СКЛ-у може бити тежак задатак. Али не бојте се, овај водич је ту да вам олакша терет.
Подаци долазе у свим облицима и облицима, али дупли записи су истакнути део сваког формата података. Било да се бавите подацима заснованим на вебу или се једноставно крећете кроз гомиле података о продаји, ваша анализа ће бити искривљена ако имате дупле вредности.
Да ли користите СКЛ да бисте смањили своје бројеве и извршили дугачке упите на својим стековима података? Ако јесте, онда ће овај водич за управљање СКЛ дупликатима бити апсолутно одушевљење за вас.
Ево неколико различитих начина на које можете да управљате дупликатима помоћу СКЛ-а.
1. Бројање дупликата помоћу групе по функцији
СКЛ је вишеструки програмски језик који нуди различите функције за поједностављење прорачуна. Ако имате довољно искуства са функцијама агрегације у СКЛ-у, можда сте већ упознати са груписати по функцији и за шта се може користити.
Тхе група од функција је једна од већина основних СКЛ команди
, што је идеално за рад са више записа јер можете користити различите агрегатне функције као што је сум, цоунт, просек, и многи други у вези са група од функцију да дође до различите вредности по реду.У зависности од сценарија, можете пронаћи дупликате са група од функционишу у оквиру једне колоне и више колона.
а. Број дупликата у једној колони
Претпоставимо да имате следећу табелу података са две колоне: ИД производа и Наређења.
ИД производа |
Наређења |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
Да бисте пронашли дуплиране ИД-ове производа, можете користити група од функција и имајући клаузулу за филтрирање агрегираних вредности, на следећи начин:
изаберите ИД производа, цоунт(ИД производа) као Укупан број
од сахил.продуцт_дупс
група по производу
са цоунт (продуцтид) > 1
поредак по производу;
Као и код типичне СКЛ изјаве, морате почети тако што ћете дефинисати колоне које желите да прикажете у коначном резултату. У овом случају, желимо да прикажемо број дуплираних вредности унутар ИД производа колона.
У првом сегменту дефинисати ИД производа колона у оквиру изаберите изјава. Тхе цоунт функција прати ИД производа референце тако да СКЛ разуме сврху вашег упита.
Затим дефинишите изворну табелу користећи из клаузула. Од цоунт је функција агрегације, потребно је да користите група од функција за груписање свих сличних вредности.
Запамтите, идеја је да наведете дупликате вредности унутар ИД производа колона. Да бисте то урадили, морате филтрирати вредности бројања и приказа које се појављују више пута у колони. Тхе имајући клаузула филтрира агрегиране податке; можете користити услов, тј. цоунт (продуцтид) >1, да прикажете жељене резултате.
Коначно, наручите по клаузула сортира коначне резултате у растућем редоследу.
Излаз је следећи:
б. Број дупликата у више колона
Када желите да бројите дупликате у више колона, али не желите да пишете више СКЛ упита, можете проширити горњи код са неколико подешавања. На пример, ако желите да прикажете дупликате редова у више колона, можете користити следећи код:
изаберите продуцтид, наруџбине, цоунт(*) као Укупан број
од сахил.продуцт_дупс
група по производу, поруџбине
са цоунт (продуцтид) > 1
поредак по производу;
У излазу ћете приметити да су приказана само два реда. Када подесите упит и додате референцу обе колоне у оквиру изаберите изјаву, добијате број одговарајућих редова са дуплираним вредностима.
Уместо да бројати (колона) функцију, морате проћи цоунт(*) функција за добијање дупликата редова. Тхе * функција прелази кроз све редове и тражи дупле редове уместо појединачних дупликата вредности.
Излаз је приказан испод:
Приказују се одговарајући редови са ИД-ом производа 14 и 47 пошто су вредности поруџбина исте.
2. Означавање дупликата помоћу функције ров_нумбер().
Док група од и имајући комбинација је најједноставнији начин да пронађете и означите дупликате унутар табеле, постоји алтернативни начин да пронађете дупликате користећи ред_број() функција. Тхе ред_број() функција је део СКЛ функције прозора категорију и од суштинског је значаја за ефикасну обраду ваших упита.
Ево како можете да означите дупликате користећи ред_број() функција:
изаберите продуцтид, наруџбине,
ров_нумбер() овер (партиција по продуцтид редоследу по продуцтид) као сно
фром сахил.продуцт_дупс;
Тхе ред_број() функција прочешља сваку вредност ИД-а производа и асимилира број понављања за сваки ИД. Тхе подела кључна реч одваја дупликате вредности и додељује вредности хронолошки, као што су 1, 2, 3 и тако даље.
Ако не користите подела кључну реч, имаћете јединствени серијски број за све ИД-ове производа, који неће одговарати вашој сврси.
Тхе наручите по клаузула у одељку партиције је функционална када се дефинише редослед сортирања. Можете бирати између растућег (подразумевано) и опадајућег редоследа.
Коначно, можете да доделите псеудоним колони да бисте олакшали касније филтрирање (ако је потребно).
3. Брисање дуплих редова из СКЛ табеле
Пошто дупле вредности у табели могу да искриве вашу анализу, њихово елиминисање током фазе чишћења података је често императив. СКЛ је вредан језик који нуди начине за ефикасно праћење и брисање дуплираних вредности.
а. Коришћење различите кључне речи
Тхе различита кључна реч је вероватно најчешћа и најчешће коришћена СКЛ функција за уклањање дупликата вредности у табели. Можете уклонити дупликате из једне колоне или чак дупликате редова у једном потезу.
Ево како можете да уклоните дупликате из једне колоне:
изаберитеразличита ИД производа из сахил.продуцт_дупс;
Излаз враћа листу свих јединствених ИД-ова производа из табеле.
Да бисте уклонили дупликате редова, можете подесити горњи код на следећи начин:
изаберитеразличита * из сахил.продуцт_дупс;
Излаз враћа листу свих јединствених редова из табеле. Гледајући излаз, приметићете да се ИД-ови производа 14 и 47 појављују само једном у табели коначних резултата.
б. Коришћење методе Цоммон Табле Екпрессион (ЦТЕ).
Метода Цоммон Табле Екпрессион (ЦТЕ) се мало разликује од уобичајеног СКЛ кода. ЦТЕ су слични СКЛ-ове привремене табеле, са једином разликом што су виртуелни, на које можете да упућујете само током извршавања упита.
Највећа предност је у томе што не морате да проследите посебан упит да бисте касније избацили ове табеле, пошто оне престају да постоје чим се упит изврши. Користећи ЦТЕ метод, можете користити код испод да пронађете и избришете дупликате.
са цтепродуцтс као
(изаберите продуцтид, наруџбине,
ров_нумбер() овер (партиција по продуцтид редоследу по продуцтид) као сно
од сахил.продуцт_дупс)
изаберите * из цтепродуцтс
где је сно = 1;
Можете позвати ЦТЕ функцију користећи са кључна реч; дефинишите име привремене виртуелне табеле после са кључна реч. Референца табеле ЦТЕ је корисна приликом филтрирања вредности табеле.
У следећем делу доделите бројеве редова вашим ИД-овима производа помоћу ред_број() функција. Пошто се позивате на сваки ИД производа са а подела функција, сваки ИД који се понавља има посебну вредност.
На крају, филтрирајте новостворене сно колона у последњем сегменту са другом изаберите изјава. Поставите овај филтер на 1 да бисте добили јединствене вредности у коначном излазу.
Научите да користите СКЛ на једноставан начин
СКЛ и његове варијанте су постале тема у граду, са његовом урођеном способношћу да поставља упите и користи релационе базе података. Од писања једноставних упита до извођења детаљних анализа са потупитима, овај језик има по мало од свега.
Међутим, пре него што напишете било какве упите, морате да усавршите своје вештине и да се упознате са кодовима да бисте постали вешт кодер. Можете научити СКЛ на забаван начин применом свог знања у игрице. Научите неке отмјене нијансе кодирања додавањем мало забаве свом коду.