SQL லேக்

Sql Lek



SQL லேக்() செயல்பாடு ஒரு குறிப்பிட்ட ஆஃப்செட்டில் தற்போதைய வரிசையிலிருந்து முந்தைய வரிசையை அணுக உங்களை அனுமதிக்கிறது. சுருக்கமாக, lag() செயல்பாடு தற்போதைய வரிசையிலிருந்து முந்தைய வரிசையை அணுக உங்களை அனுமதிக்கிறது. ஆஃப்செட் மதிப்பைக் குறிப்பிடுவதன் மூலம், தற்போதைய வரிசையிலிருந்து முந்தைய 1, 2, 3 போன்ற வரிசைகளை அணுகலாம்.

இது லீட்() செயல்பாட்டிற்கு எதிரானது, இது அடுத்தடுத்த வரிசைகளை அணுக உங்களை அனுமதிக்கிறது.







SQL லேக்()

செயல்பாட்டின் தொடரியல் பின்வருமாறு:



லேஜி(மதிப்பு_வெளிப்பாடு, ஆஃப்செட் [, இயல்புநிலை])
மேல் (
[PARTITION by partition_expression]
வரிசை_வெளிப்பாடு [ASC | மூலம் ஆர்டர் செய்யவும் DESC]
);

பின்வருபவை ஆதரிக்கப்படும் வாதங்கள்:



  • மதிப்பு_வெளிப்பாடு - இது முந்தைய வரிசையின் திரும்ப மதிப்பைக் குறிப்பிடுகிறது. வெளிப்பாடு ஒரு ஒற்றை மதிப்புக்கு மதிப்பீடு செய்யப்பட வேண்டும்.
  • ஆஃப்செட் - தற்போதைய வரிசையிலிருந்து எத்தனை வரிசைகள் பின்னோக்கி அணுக வேண்டும் என்பதைக் குறிப்பிடுகிறது.
  • இயல்புநிலை - ஆஃப்செட் பகிர்வின் எல்லைக்கு வெளியே இருந்தால், இது இயல்புநிலை மதிப்பை அமைக்கிறது. முன்னிருப்பாக, மதிப்பு NULL ஆக அமைக்கப்படும்.
  • மூலம் பிரித்தல் - தரவை எவ்வாறு பிரிப்பது என்பதை இது குறிப்பிடுகிறது.
  • உத்தரவின் படி - இது ஒவ்வொரு பகிர்விலும் உள்ள வரிசைகளுக்கான வரிசை வடிவமைப்பை அமைக்கிறது.

மாதிரி தரவு அமைப்பு

லேக்() செயல்பாட்டின் செயல்பாட்டிற்குள் நுழைவதற்கு முன், ஆர்ப்பாட்ட நோக்கங்களுக்காக ஒரு அடிப்படை அட்டவணையை அமைப்பதன் மூலம் தொடங்குவோம்.





அட்டவணை தயாரிப்புகளை உருவாக்கவும் (
product_id INT முதன்மை விசை AUTO_INCREMENT,
தயாரிப்பு_பெயர் VARCHAR(255),
வகை VARCHAR(255),
விலை டெசிமல்(10, 2),
அளவு INT,
காலாவதி_தேதி DATE,
பார்கோடு BIGINT
);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('Chef Hat 25cm',
'பேக்கரி',
24.67,
57,
'2023-09-09',
2854509564204);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('காடை முட்டை - பதிவு செய்யப்பட்ட',
'சரக்கறை',
17.99,
67,
'2023-09-29',
1708039594250);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('காபி - முட்டை நாக் கபுசினோ',
'பேக்கரி',
92.53,
10,
'2023-09-22',
8704051853058);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('பேரி - முட்கள் நிறைந்த',
'பேக்கரி',
65.29,
48,
'2023-08-23',
5174927442238);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('பாஸ்தா - ஏஞ்சல் ஹேர்',
'சரக்கறை',
48.38,
59,
'2023-08-05',
8008123704782);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('வைன் - ப்ரோசெக்கோ வால்டோபியாட்டீன்',
'உற்பத்தி',
44.18,
3,
'2023-03-13',
6470981735653);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('பேஸ்ட்ரி - பிரஞ்சு மினி வகைப்படுத்தப்பட்ட',
'சரக்கறை',
36.73,
52,
'2023-05-29',
5963886298051);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('ஆரஞ்சு - பதிவு செய்யப்பட்ட, மாண்டரின்',
'உற்பத்தி',
65.0,
1,
'2023-04-20',
6131761721332);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('பன்றி இறைச்சி - தோள்பட்டை',
'உற்பத்தி',
55.55,
73,
'2023-05-01',
9343592107125);

செருகு
உள்ளே
தயாரிப்புகள் (தயாரிப்பு_பெயர்,
வகை,
விலை,
அளவு,
காலாவதி_தேதி,
பார்கோடு)
மதிப்புகள் ('Dc Hikiage Hira Huba',
'உற்பத்தி',
56.29,
53,
'2023-04-14',
3354910667072);

தரவு உருவாக்கம் மற்றும் அமைவு முடிந்ததும், சில எடுத்துக்காட்டுகளைப் பற்றி விவாதிப்போம்.

எடுத்துக்காட்டு 1: அடிப்படை பயன்பாடு

இந்த வழக்கில், தயாரிப்புத் தகவலைக் கொண்ட “தயாரிப்புகள்” அட்டவணைக்கு அணுகல் உள்ளது. தற்போதைய வரிசையில் இருந்து முந்தைய பார்கோடைப் பெற விரும்புகிறோம் என்று வைத்துக்கொள்வோம்.



லேக்() செயல்பாட்டை நாம் பின்வருமாறு பயன்படுத்தலாம்:

தேர்ந்தெடுக்கவும்
பொருளின் பெயர்,
விலை,
பின்னடைவு (பார்கோடு) முடிந்துவிட்டது (வகை மூலம் பகிர்வு
உத்தரவின் படி
விலை asc) முந்தைய_உருப்படி
இருந்து
தயாரிப்புகள் p;

கொடுக்கப்பட்ட குறியீடு வகையின் அடிப்படையில் தரவைப் பிரிக்கிறது. இது lag() செயல்பாட்டைப் பயன்படுத்தி பகிர்வில் முந்தைய பார்கோடைப் பெறுகிறது.

இதன் விளைவாக வெளியீடு பின்வருமாறு:

எடுத்துக்காட்டு 2: இயல்புநிலை மதிப்பை அமைத்தல்

ஒரு குறிப்பிட்ட நெடுவரிசையில் முந்தைய வரிசை இல்லை என்றால் (எல்லைக்கு வெளியே), செயல்பாடு முந்தைய எடுத்துக்காட்டில் காட்டப்பட்டுள்ளபடி NULL மதிப்பை அமைக்கிறது.

ஸ்கோப் இல்லாத அணுகலுக்கு இயல்புநிலை மதிப்பை அமைக்க, பின்வருவனவற்றைச் செய்யலாம்:

தேர்ந்தெடுக்கவும்
பொருளின் பெயர்,
விலை,
பின்னடைவு(பார்கோடு, 1, 'N/A') முடிந்துவிட்டது (வகை வாரியாகப் பிரித்தல்
உத்தரவின் படி
விலை asc) முந்தைய_உருப்படி
இருந்து
தயாரிப்புகள் p;

இயல்புநிலை மதிப்பை 'N/A' என அமைத்துள்ளோம். இது வெளியீட்டில் காட்டப்பட்டுள்ளபடி வரம்புக்கு வெளியே உள்ள எந்த மதிப்பையும் மாற்ற வேண்டும்:

எடுத்துக்காட்டு 3: தனிப்பயன் ஆஃப்செட் மதிப்பு

தற்போதைய வரிசையிலிருந்து முந்தைய இரண்டு வரிசைகளை அணுக விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம். ஆஃப்செட் மதிப்பை 2 ஆக அமைப்பதன் மூலம் இதைச் செய்யலாம்.

ஒரு எடுத்துக்காட்டு வினவல் பின்வருவனவற்றில் விளக்கப்பட்டுள்ளது:

தேர்ந்தெடுக்கவும்
பொருளின் பெயர்,
விலை,
பின்னடைவு(பார்கோடு, 2, 'N/A') முடிந்துவிட்டது (வகை வாரியாகப் பிரித்தல்
உத்தரவின் படி
விலை asc) முந்தைய_உருப்படி
இருந்து
தயாரிப்புகள் p;

வெளியீடு:

இந்த வினவல் ஒவ்வொரு பகிர்விலும் முந்தைய இரண்டு வரிசைகளை வழங்குகிறது.

முடிவுரை

இந்த டுடோரியலில், தற்போதைய வரிசையில் இருந்து முந்தைய உருப்படியைப் பெறுவதற்கு லேக்() செயல்பாட்டுடன் எவ்வாறு வேலை செய்வது என்பதை நாங்கள் கற்றுக்கொண்டோம்.