ఈ ట్యుటోరియల్ PostgreSQL ఫంక్షన్లతో ఎలా పని చేయాలో అన్వేషిస్తుంది. మేము ఫంక్షన్ సింటాక్స్ మరియు పారామితులను కూడా అన్వేషిస్తాము మరియు కొన్ని ఆచరణాత్మక ఉదాహరణలను పరిశీలిస్తాము.
PostgreSQL ర్యాంక్() ఫంక్షన్
కిందిది PostgreSQLలో ర్యాంక్() ఫంక్షన్ యొక్క వాక్యనిర్మాణాన్ని చూపుతుంది:
ర్యాంక్() పైగా (విభజన_ఎక్స్ప్రెషన్ ఆర్డర్ ద్వారా క్రమబద్ధీకరణ_ఎక్స్ప్రెషన్ [ASC|DESC])
మేము ర్యాంక్ () ఫంక్షన్ని కాల్ చేయడం ద్వారా ప్రారంభిస్తాము. మేము విండో ఫంక్షన్ ఆపరేషన్ చేయాలనుకుంటున్నామని సూచించడానికి OVER కీవర్డ్ని ఉపయోగిస్తాము.
తర్వాతి పార్టిషన్ బై పార్టిషన్_ఎక్స్ప్రెషన్. ఈ నిబంధన ఇచ్చిన వ్యక్తీకరణ ఆధారంగా వరుసలను వివిధ విభజనలుగా విభజిస్తుంది. ప్రతి కొత్త విభజనకు ర్యాంక్ పూర్ణాంకం విలువ 1 వద్ద ప్రారంభమయ్యే ప్రతి విభజనలో ర్యాంకింగ్ స్వతంత్రంగా చేయబడుతుంది.
చివరగా, మేము అడ్డు వరుస క్రమాన్ని నిర్ణయించే నిలువు వరుస లేదా వ్యక్తీకరణను పేర్కొనే నిబంధన ద్వారా ఆర్డర్ని కలిగి ఉన్నాము.
PostgreSQL ర్యాంక్() ఫంక్షన్ ఉదాహరణ
కింది ప్రశ్న PostgreSQL యొక్క ర్యాంక్() ఫంక్షన్ను ఉపయోగించడం యొక్క ప్రాథమిక ఉదాహరణను ప్రదర్శిస్తుంది:
విలువను ఎంచుకోండి, ర్యాంక్ () పైగా (విలువ ఆధారంగా ఆర్డర్) ర్యాంక్గానుండి (
విలువలు (10), (20), (5), (15), (10)
AS డేటా(విలువ);
ఈ ఉదాహరణలో, మేము వాటి ఆరోహణ క్రమం ఆధారంగా విలువలను ర్యాంక్ చేస్తాము. విలువ యొక్క రెండు సంఘటనలు ఒకే ర్యాంక్తో కేటాయించబడతాయి, ఎందుకంటే అవి ఒకే విధంగా ఉంటాయి మరియు క్రమంలో ఒకే స్థానంలో కనిపిస్తాయి.
ఫలిత పట్టిక క్రింది విధంగా ఉంది:
విలువను ఎంచుకోండి, ర్యాంక్() పైగా (విలువ ద్వారా విభజన % 2 విలువ ద్వారా ఆర్డర్) ర్యాంక్గానుండి (
విలువలు (10), (20), (5), (15), (10)
AS డేటా(విలువ);
PostgreSQL ర్యాంక్() క్లాజ్ ద్వారా విభజనతో ఫంక్షన్ ఉదాహరణ
కింది ఉదాహరణను పరిగణించండి:
విలువను ఎంచుకోండి, ర్యాంక్() పైగా (విలువ ద్వారా విభజన % 2 విలువ ద్వారా ఆర్డర్) ర్యాంక్గానుండి (
విలువలు (10), (20), (5), (15), (10)
AS డేటా(విలువ);
ఈ ఉదాహరణలో, విలువ సరి సంఖ్యా లేదా బేసి సంఖ్యా కాదా అని తనిఖీ చేసే వ్యక్తీకరణతో మేము పార్టిషన్ బై క్లాజ్ని జోడించాము. ఇది విలువలను సమర్థవంతంగా రెండు విభజనలుగా సమూహపరచాలి: ఒకటి సరి సంఖ్యల కోసం (శేషం 0 ఉన్నచోట) మరియు మరొకటి బేసి సంఖ్యల కోసం (శేషం 1 అయితే).
ఫలిత సెట్ క్రింది విధంగా ఉంది:
బహుళ SQL లక్షణాలను కలపడం ద్వారా PostgreSQL ర్యాంక్() ఫంక్షన్ ఉదాహరణ
మీరు ర్యాంక్() ఫంక్షన్ని ఉపయోగించి మరింత క్లిష్టమైన ప్రశ్నలను కూడా సృష్టించవచ్చు. ఉదాహరణకు, పగిలా డేటాబేస్ తీసుకోండి. మేము వారి మొత్తం అద్దె చెల్లింపుల ఆధారంగా మొదటి ఐదుగురు కస్టమర్లను పొందాలనుకుంటున్నాము మరియు వారికి ర్యాంక్లను కేటాయించాలనుకుంటున్నాము.
కింది ప్రశ్నలో చూపిన విధంగా మనం ర్యాంక్() ఫంక్షన్ని ఉపయోగించవచ్చు:
SELECT customer_id, first_name, last_name, total_payments,RANK() ఓవర్ (మొత్తం_చెల్లింపుల DESC ద్వారా ఆర్డర్) ర్యాంక్
నుండి (
c.customer_id, c.first_name, c.last_name, SUM(p.amount) AS మొత్తం_చెల్లింపులను SELECT
కస్టమర్ నుండి సి
c.customer_id = p.customer_id పై చెల్లింపులో చేరండి
c.customer_id, c.first_name, c.last_name ద్వారా గ్రూప్
) AS కస్టమర్_చెల్లింపులు
ర్యాంక్ వారీగా ఆర్డర్ చేయండి
పరిమితి 10;
ఈ ఉదాహరణలో, మేము customer_id, first_name, last_name, total_payment మరియు కేటాయించిన ర్యాంక్()ని ఎంచుకుంటాము. ఆపై, అవరోహణ క్రమంలో క్రమబద్ధీకరించబడిన total_payment ఆధారంగా ప్రతి కస్టమర్కు ర్యాంక్ని కేటాయించడానికి మేము rank() ఫంక్షన్ని ఉపయోగిస్తాము.
కస్టమర్ మరియు చెల్లింపు పట్టికలలో చేరడం ద్వారా ప్రతి కస్టమర్ కోసం మొత్తం చెల్లింపులను లెక్కించడానికి అంతర్గత సబ్క్వెరీ మమ్మల్ని అనుమతిస్తుంది. మేము ప్రతి కస్టమర్ కోసం చెల్లింపుల మొత్తాన్ని పొందేందుకు కస్టమర్_id, మొదటి_పేరు మరియు చివరి_పేరు నిలువు వరుసల ఆధారంగా ఫలితాన్ని సమూహపరుస్తాము.
చివరగా, బయటి ప్రశ్నలో, మేము ఫలితం సెట్పై ర్యాంక్() ఫంక్షన్ను వర్తింపజేస్తాము మరియు ఆరోహణ క్రమంలో total_payments ద్వారా ఆర్డర్ చేస్తాము. మేము టాప్ 10 అడ్డు వరుసలను మాత్రమే పొందేందుకు పరిమితి నిబంధనను కూడా చేర్చాము.
మీరు చూడగలిగినట్లుగా, సార్టింగ్, ఫిల్టరింగ్, కంకరలు, చేరికలు మరియు మరిన్ని వంటి బహుళ SQL ఫీచర్లను కలపడం ద్వారా మీరు మరింత తెలివైన డేటాను రూపొందించవచ్చు.
ముగింపు
మేము నిర్వచించిన షరతుల ఆధారంగా ఫలితం సెట్ నుండి ఇచ్చిన అడ్డు వరుస యొక్క ర్యాంక్ను పొందడానికి PostgreSQLలోని ర్యాంక్() ఫంక్షన్తో ఎలా పని చేయవచ్చో అన్వేషించాము. మరింత క్లిష్టమైన ప్రశ్నలను సృష్టించడానికి ర్యాంక్() ఫంక్షన్ను ఇతర SQL సాధనాలతో ఎలా కలపాలో కూడా మేము కవర్ చేసాము.