MySQL రో నంబర్ విండో ఫంక్షన్

Mysql Row Number Window Function



MySQL లోపల, ROW NUMBER () పద్ధతిలో విభజన లోపల ప్రతి అడ్డు వరుసకు కాలక్రమ సంఖ్య ఉంటుంది. ఇది ఒక రకమైన విండో ఫీచర్ మాత్రమే. విభజనలోని అడ్డు వరుసల సంఖ్యతో వరుసల సంఖ్య 1 వద్ద ప్రారంభమవుతుంది. గుర్తుంచుకోండి, వెర్షన్ 8.0 కి ముందు, MySQL రో నంబర్ () ఫంక్షన్‌ను అనుమతించదు, అయితే, ఈ ఫీచర్‌ను అనుకరించడానికి సహాయపడే సెషన్ వేరియబుల్‌ను ఇది అందిస్తుంది. ఈ గైడ్ అంతటా మేము MySQL రో నంబర్ () కార్యాచరణ గురించి మరింత అర్థం చేసుకుంటాము మరియు ఫలిత సేకరణలో ప్రతి అడ్డు వరుసకు వరుస సంఖ్యను ఉత్పత్తి చేస్తాము. MySQL లో, ROW_NUMBER () పద్ధతులు తరువాతి నిబంధనలతో ఉపయోగించబడతాయి:

  • ఓవర్ () నిబంధన దాని లోపల ఉపయోగించబడుతుంది.
  • నిబంధనల ద్వారా ఆర్డర్‌లు పేర్కొన్న కాలమ్ యొక్క సార్టింగ్ క్రమం ప్రకారం ఫలితాన్ని ఏర్పాటు చేస్తాయి.

వాక్యనిర్మాణం:

>> ఎంచుకోండి col_name,ROW_NUMBER()ఓవర్( పార్టిషన్ Col_name ద్వారా, ద్వారా ఆర్డర్ col_name) AS వరుస_సంఖ్య నుండి టేబుల్_పేరు;

అప్లికేషన్‌ల నుండి MySQL కమాండ్-లైన్ క్లయింట్ షెల్‌ను తెరిచి, లాగిన్ చేయడానికి పాస్‌వర్డ్ టైప్ చేద్దాం.









వరుస సంఖ్య ఫంక్షన్‌పై పనిచేయడం ప్రారంభించడానికి మీరు కొత్త పట్టికను సృష్టించాలి లేదా డిఫాల్ట్ టేబుల్‌ని ఉపయోగించాలి. దిగువ చిత్రంలో సమర్పించినట్లుగా, స్కీమా డేటాలో మాకు కొన్ని రికార్డులు ఉన్న పట్టిక జంతువులు ఉన్నాయి. SELECT సూచనను ఉపయోగించి దాని రికార్డులను పొందండి.



>> ఎంచుకోండి * నుండి సమాచారం . జంతువులు;





ఉదాహరణ 01: ROW_NUMBER () నిబంధన ద్వారా ఆర్డర్‌ని ఉపయోగించడం

వరుస సంఖ్య ఫంక్షన్ యొక్క కొన్ని ఉదాహరణలను వివరించడానికి మేము అదే పట్టికను ఉపయోగిస్తాము. మేము ROW_NUMBER () ఫంక్షన్‌ని ఒక ఉదాహరణగా తీసుకున్నాము, దాని తర్వాత ఓవర్ (), అయితే ORDER BY నిబంధనను మాత్రమే ఉపయోగిస్తాము. కాలమ్ ధర క్రమం ప్రకారం వరుసలను లెక్కించేటప్పుడు మేము అన్ని రికార్డులను పొందుతున్నాము. మేము అడ్డు వరుసకు సంఖ్య_ని నిల్వ చేసే నిలువు వరుసకు పేరు_ వరుసగా ఉన్నాము. అలా చేయడానికి క్రింది ఆదేశాన్ని ప్రయత్నిద్దాం.

>> ఎంచుకోండి *,ROW_NUMBER()ఓవర్( ద్వారా ఆర్డర్ ధర) AS వరుస_సంఖ్య నుండి సమాచారం . జంతువులు;

పై ప్రశ్నను అమలు చేసిన తర్వాత, కాలమ్ ధర క్రమబద్ధీకరణ క్రమం ప్రకారం వరుసలు సంఖ్యలతో కేటాయించబడ్డాయని మనం చూడవచ్చు. కొన్ని చిన్న ధరలు కాలమ్ పైభాగంలో ఉండాలని మరియు దాని ప్రకారం క్రమబద్ధీకరించాలని మీరు అనుకోవచ్చు. కానీ ఆర్డర్ బై క్లాజ్ విలువలను క్రమబద్ధీకరించడానికి కాలమ్ యొక్క మొదటి అంకె లేదా వర్ణమాలను మాత్రమే చూస్తుంది.



కాలమ్ ఏజ్ యొక్క సార్టింగ్ ఆర్డర్‌ని ఉపయోగిస్తున్నప్పుడు ఆర్డర్ బై క్లాజ్ తర్వాత అదే ప్రశ్నను అమలు చేద్దాం. కాలమ్ వయస్సు ప్రకారం అవుట్‌పుట్ ఇవ్వబడుతుంది.

>> ఎంచుకోండి *,ROW_NUMBER()ఓవర్( ద్వారా ఆర్డర్ వయస్సు) AS వరుస_సంఖ్య నుండి సమాచారం . జంతువులు;

ఉదాహరణ 02: ROW_NUMBER () నిబంధన ద్వారా పార్టిషన్‌ను ఉపయోగించడం

ఫలితాలను తనిఖీ చేయడానికి మేము ROW_NUMBER () ప్రశ్నలోని ఏకైక PARTITION నిబంధనను ఉపయోగిస్తాము. మేము కాలమ్ రంగు ప్రకారం పట్టికను విభజించేటప్పుడు, ROW_NUMBER () మరియు OVER నిబంధన తర్వాత రికార్డ్‌లను పొందడానికి SELECT ప్రశ్నను ఉపయోగిస్తున్నాము. కమాండ్ షెల్‌లో కింది అనుబంధాన్ని జోడించండి.

>> ఎంచుకోండి *,ROW_NUMBER()ఓవర్( పార్టిషన్ రంగు ద్వారా) AS వరుస_సంఖ్య నుండి సమాచారం . జంతువులు;

రంగులను క్రమబద్ధీకరించే క్రమం ప్రకారం, విభజనలలో వరుసల సంఖ్య కేటాయించబడిందని మీరు ఫలితంలో చూడవచ్చు. నలుపు రంగు కోసం మనకు 4 విలువలు ఉన్నందున అది 4 వరుసలను తీసుకుంటుంది. అందుకే ఇది 1 నుండి 4 వరకు ప్రారంభమయ్యే నాలుగు వరుసల సంఖ్యలను కలిగి ఉంది మరియు దీనికి విరుద్ధంగా.

ఈ ఉదాహరణ కాలమ్ లింగం ద్వారా విభజించబడిన అదే ఉదాహరణను ప్రయత్నించండి. మనకు తెలిసినట్లుగా, ఈ పట్టికలో మాకు రెండు లింగాలు మాత్రమే ఉన్నాయి, అందుకే 2 విభజనలు ఏర్పడతాయి. ఆడవారు 9 వరుసలను ఆక్రమిస్తారు, అందుకే దీనికి 1 నుండి 9 వరకు వరుస సంఖ్యలు ఉంటాయి, మగవారికి 8 విలువలు ఉండగా, అందుకే 1 నుండి 8 వరకు ఉంటుంది.

>> ఎంచుకోండి *,ROW_NUMBER()ఓవర్( పార్టిషన్ లింగం ద్వారా) AS వరుస_సంఖ్య నుండి సమాచారం . జంతువులు;

ఉదాహరణ 03: ROW_NUMBER () ద్వారా & ఆర్డర్ ద్వారా భాగస్వామ్యాన్ని ఉపయోగించడం

మేము పైన పేర్కొన్న రెండు ఉదాహరణలను MySQL కమాండ్ లైన్‌లో చేసాము, ఇప్పుడు MySQL వర్క్‌బెంచ్ 8.0 లో ROW_NUMBER () ఉదాహరణ చేయడానికి సమయం ఆసన్నమైంది. కాబట్టి, అప్లికేషన్‌ల నుండి MySQL వర్క్‌బెంచ్ 8.0 ని తెరవండి. పని ప్రారంభించడానికి స్థానిక హోస్ట్ రూట్ డేటాబేస్‌తో MySQL వర్క్‌బెంచ్‌ను కనెక్ట్ చేయండి.

MySQL వర్క్‌బెంచ్ యొక్క ఎడమ వైపున, మీరు స్కీమా బార్‌ను కనుగొంటారు, నావిగేటర్‌ను పేల్చివేయండి. ఈ స్కీమా బార్‌లో, మీరు డేటాబేస్‌ల జాబితాను కనుగొంటారు. డేటాబేస్ జాబితా క్రింద, మీరు దిగువ చిత్రంలో చూడగలిగినట్లుగా, విభిన్న పట్టికలు మరియు నిల్వ చేయబడిన విధానాలను కలిగి ఉంటారు. మా డేటాబేస్ 'డేటా'లో మాకు వేర్వేరు పట్టికలు ఉన్నాయి. మేము ROW_NUMBER () ఫంక్షన్ అమలు కోసం ఉపయోగించడం ప్రారంభించడానికి ప్రశ్న ప్రాంతంలో SELECT ఆదేశాన్ని ఉపయోగించి పట్టిక 'order1' ని తెరుస్తాము.

>> ఎంచుకోండి * నుండి సమాచారం .ఆర్డర్ 1;

దిగువ చూపిన విధంగా టేబుల్ ఆర్డర్ 1 గ్రిడ్ వ్యూలో ప్రదర్శించబడుతుంది. మీరు 4 కాలమ్ ఫీల్డ్‌లు, ఐడి, రీజియన్, స్టేటస్ మరియు ఆర్డర్‌నోలను చూడవచ్చు. ఆర్డర్ బై మరియు పార్టిషన్ బై క్లాజ్ ద్వారా ఒకేసారి ఉపయోగిస్తున్నప్పుడు మేము ఈ టేబుల్ యొక్క అన్ని రికార్డులను పొందుతాము.

MySQL వర్క్‌బెంచ్ 8.0 యొక్క ప్రశ్న ప్రాంతంలో, దిగువ ప్రదర్శించబడే ప్రశ్నను టైప్ చేయండి. OVER నిబంధనతో పాటు ROW_NUMBER () ఫంక్షన్ తర్వాత అన్ని రికార్డులను పొందడం ద్వారా SELECT క్లాజ్‌తో ప్రశ్న ప్రారంభించబడింది. OVER నిబంధన తర్వాత, ఈ పట్టిక ప్రకారం పట్టికను విభజనలుగా విభజించడానికి పార్టిషన్ ద్వారా స్టేట్మెంట్ ద్వారా కాలమ్ స్థితిని పేర్కొన్నాము. ఆర్డర్ బై క్లాజ్ కాలమ్ రీజియన్ ప్రకారం పట్టికను అవరోహణ మార్గంలో అమర్చడానికి ఉపయోగించబడుతుంది. వరుస సంఖ్యలు అడ్డు వరుస_సంఖ్య కాలమ్‌లో ఉంచబడతాయి. ఈ ఆదేశాన్ని అమలు చేయడానికి ఫ్లాష్ చిహ్నాన్ని నొక్కండి.

దిగువ ప్రదర్శించబడిన ఫలితం చూపబడుతుంది. అన్నింటిలో మొదటిది, కాలమ్ స్థితి విలువల ప్రకారం పట్టిక రెండు భాగాలుగా విభజించబడింది. ఆ తరువాత, ఇది 'ప్రాంతం' కాలమ్ యొక్క అవరోహణ క్రమంలో ప్రదర్శించబడింది మరియు విభజన సంఖ్యలు వరుస సంఖ్యలతో కేటాయించబడ్డాయి.

ముగింపు:

చివరగా, MySQL వర్క్‌బెంచ్ మరియు MySQL కమాండ్-లైన్ క్లయింట్ షెల్‌లో ROW_NUMBER () ఫంక్షన్‌ను ఉపయోగించడంలో అవసరమైన అన్ని ఉదాహరణలను మేము పూర్తి చేశాము.