DENSE_RANK() ఫంక్షన్ మరొక నిర్దిష్ట నిలువు వరుసలోని విలువల ఆధారంగా ఫలిత సెట్లో ప్రతి అడ్డు వరుసకు ప్రత్యేకమైన ర్యాంక్ను కేటాయించడానికి అనుమతిస్తుంది. ఇది ర్యాంక్() ఫంక్షన్కి చాలా పోలి ఉంటుంది కానీ డూప్లికేట్ రికార్డ్లను ఫంక్షన్ హ్యాండిల్ చేసే విధానంలో స్వల్ప వ్యత్యాసాలతో ఉంటుంది.
ఈ ట్యుటోరియల్లో, ఈ ఫంక్షన్ ఎలా పని చేస్తుందో, అందించిన సింటాక్స్ మరియు డేటాబేస్లో మనం ఎలా ఉపయోగించవచ్చో విశ్లేషిస్తాము.
అది ఎలా పని చేస్తుంది
ఈ ఫంక్షన్ ఎలా పనిచేస్తుందో వివరించడం ద్వారా ప్రారంభిద్దాం. ఫంక్షన్ ఉన్నత స్థాయి అని గుర్తుంచుకోవడం మంచిది మరియు మేము అంతర్లీన అమలును వివరించలేము.
ర్యాంక్ 1 నుండి ప్రారంభమయ్యే ఫలితాల సెట్లోని ప్రతి అడ్డు వరుసకు ర్యాంక్ను కేటాయించడం ద్వారా మరియు నిలువు వరుసలలోని ప్రతి ప్రత్యేక విలువకు 1 ద్వారా పెంచడం ద్వారా ఫంక్షన్ పని చేస్తుంది.
పేర్కొన్న నిలువు వరుసలలో సారూప్య విలువలు (నకిలీలు) ఉన్న అడ్డు వరుసలు ఒకే ర్యాంక్తో కేటాయించబడతాయి మరియు వేరొక విలువతో తదుపరి వరుస ఎటువంటి ఖాళీలు లేకుండా తదుపరి అందుబాటులో ఉన్న ర్యాంక్తో కేటాయించబడుతుంది.
మేము పేర్కొన్నట్లుగా, ర్యాంక్() ఫంక్షన్ నుండి భిన్నంగా ఉండే నకిలీ విలువలు ఉన్న చోట ఫంక్షన్ ఏ ఖాళీలను వదిలివేయదు.
దట్టమైన_ర్యాంక్() ఫంక్షన్ యొక్క సాధారణ ఉపయోగం ర్యాంకింగ్ కార్యకలాపాలను నిర్వహించడం. ఉదాహరణకు, టాప్ N రికార్డ్లు మొదలైన వాటిని కనుగొనడానికి మనం దీన్ని ఉపయోగించవచ్చు.
ఫంక్షన్ సింటాక్స్:
కిందిది dens_rank() ఫంక్షన్ యొక్క వాక్యనిర్మాణాన్ని వివరిస్తుంది:
DENSE_RANK() OVER ([PARTITION by partition_expression, ... ]
ఆర్డర్ క్రమబద్ధీకరణ_వ్యక్తీకరణ ద్వారా [ASC | DESC],...
)
ఇచ్చిన సింటాక్స్లో:
- మేము dens_rank() ఫంక్షన్తోనే ప్రారంభిస్తాము.
- OVER నిబంధన విండో ఫంక్షన్ స్పెసిఫికేషన్ల ప్రారంభాన్ని సూచిస్తుంది. ఫలితాల సెట్లో ర్యాంకింగ్ ఎలా వర్తింపజేయబడుతుందో ఇది నిర్వచిస్తుంది.
- PARTITION BY partition_expression అనేది ఐచ్ఛిక నిబంధన, ఇది ఫలిత సెట్ను ఒకటి లేదా అంతకంటే ఎక్కువ నిలువు వరుసల ఆధారంగా సమూహాలుగా లేదా విభజనలుగా విభజించడానికి అనుమతిస్తుంది. కొత్త విభజనలో ర్యాంక్ రీసెట్తో ప్రతి విభజనపై ర్యాంకింగ్ విడిగా వర్తించబడుతుంది.
- ORDER BY sort_expression ఫలిత విభజనలలో డేటాను క్రమబద్ధీకరించడానికి మనం ఉపయోగించాలనుకుంటున్న క్రమాన్ని నిర్దేశిస్తుంది.
నమూనా డేటా
డెన్స్_ర్యాంక్() ఫంక్షన్ను ఎలా ఉపయోగించాలో ప్రదర్శించడానికి, నమూనా డేటాతో పట్టికతో ప్రారంభిద్దాం. మా విషయంలో, మేము ఈ క్రింది విధంగా నమూనా 'ఆర్డర్లు' పట్టికను ఉపయోగిస్తాము:
ఉదాహరణ 1: Dense_Rank() ఫంక్షన్ వినియోగం
ధర ఆధారంగా ఫలిత ఆర్డర్లను ర్యాంక్ చేయడానికి మేము dens_rank() ఫంక్షన్ని ఉపయోగించవచ్చు. కింది ఉదాహరణ ప్రశ్నను పరిగణించండి:
ఎంచుకోండిఆర్డర్ గుర్తింపు సంఖ్యా,
కస్టమర్_యూజర్ పేరు,
ఉత్పత్తి_కొనుగోలు,
DENSE_RANK() OVER (
ఆర్డర్ ద్వారా
ధర DISC
) ధర_ర్యాంక్
నుండి
ఆదేశాలు o;
ఇచ్చిన ఉదాహరణలో, ఆర్డర్ల ధర ఆధారంగా డేటాను ర్యాంక్ చేయడానికి మేము dens_rank() ఫంక్షన్ని ఉపయోగిస్తాము. మేము డేటాను సమూహం చేయనందున మేము విభజన ద్వారా విభజనను వదిలివేస్తాము.
ఫలిత అవుట్పుట్ క్రింది విధంగా ఉంది:
ఉదాహరణ 2: విభజన ద్వారా
కొనుగోలు చేసిన ఉత్పత్తి ఆధారంగా డేటాను వివిధ విభాగాలుగా సమూహపరచడానికి మేము పార్టిషన్ బై క్లాజ్ని కూడా జోడించవచ్చు.
ఒక ఉదాహరణ ప్రశ్న క్రింది విధంగా ఉంది:
ఎంచుకోండిఆర్డర్ గుర్తింపు సంఖ్యా,
కస్టమర్_యూజర్ పేరు,
ఉత్పత్తి_కొనుగోలు,
DENSE_RANK() OVER (
product_purchased ద్వారా విభజన
ఆర్డర్ ద్వారా
ధర DISC
) ధర_ర్యాంక్
నుండి
ఆదేశాలు o;
ఇది ఫలిత సమూహాల ఆధారంగా డేటాను వివిధ సమూహాలుగా సమూహపరచాలి మరియు ప్రతి సమూహంలోని అంశాలకు ర్యాంక్ను వర్తింపజేయాలి.
ముగింపు
ఈ పోస్ట్లో, నిర్దిష్ట నిలువు వరుసల ఆధారంగా విలువలకు ర్యాంక్ను కేటాయించడానికి SQLలో దట్టమైన_ర్యాంక్() విండో ఫంక్షన్ని ఉపయోగించడం మరియు దానితో పని చేయడం యొక్క ప్రాథమికాలను మేము నేర్చుకున్నాము.