முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 13 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 52/57~12 min
தொகுதி பாடங்கள் (4/4)

மாற்றங்கள்: பின்னடைவு மற்றும் முன்னணி

மாற்றங்கள்: பின்னடைவு மற்றும் முன்னணி

வரிசை மற்றும் நேர அடிப்படையிலான தரவுகளில், நீங்கள் அடிக்கடி தற்போதைய வரிசையை முந்தைய நாளின் வரிசையுடன் ஒப்பிட வேண்டும். "நிலையான" SQL இல், அவ்வாறு செய்வதற்கு மிகவும் ஆபத்தான (மற்றும் மிக மெதுவாக) சுய-இணைப்புகள் தேவை.

LAG() (முந்தைய வரிசை) மற்றும் LEAD() (அடுத்த வரிசை) செயல்பாடுகள் இந்த சிக்கலை அதீத சுறுசுறுப்பு மற்றும் நேர்த்தியுடன் சரியாக தீர்க்கும்.

கடந்த காலத்தையும் எதிர்காலத்தையும் நோக்குதல்

SQL
SELECT
  created_at,
  total_amount,
  LAG(total_amount) OVER(ORDER BY created_at) AS importo_ordine_precedente
FROM orders;

எடுத்துக்காட்டில், ஒவ்வொரு வரிசையும் ஒரே அட்டவணையில் தயாரிக்கப்பட்ட தொகையை வசதியாக எடுத்துச் செல்லும், ஒரு வரிசையில் முன்னோக்கி மாற்றப்படும் (நேரத்தில் பின்னோக்கி). வித்தியாசத்தை அல்லது மாதத்திற்கு ஒரு மாத சதவீத மாற்றங்களை கணக்கிட total_amount - LAG(...) ஐ எளிதாக கழிக்கலாம்!

அதேபோல், LEAD() ஆனது தற்போதைய வரிசைக்கு கீழே உள்ள வரிசையிலிருந்து மதிப்பை இழுக்கும்.

உடற்பயிற்சி#sql.m13.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

'தயாரிப்புகள்' அட்டவணையில் இருந்து, 'ஐடி', 'லான்ச்ட்_ஆன்', 'பிரைஸ்' ஆகியவற்றைப் பிரித்தெடுத்து, 'முந்தைய_விலை'யைச் சேர்க்கவும், அதாவது தர்க்கரீதியாக 'முந்தையது' எனக் கருதப்படும் தயாரிப்பின் 'விலை', ஏறுவரிசையில் 'லாஞ்சட்_ஆன்' ஆர்டரில்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

பின்தங்கிய (விலை) ஓவர் பயன்படுத்தவும் (ASC இல் தொடங்கப்பட்டது

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#sql.m13.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு தனிப்பட்ட பயனரின் மதிப்பீடு தாவல்களை எவ்வாறு கணக்கிடுவீர்கள்? இதை உருவகப்படுத்தவும்: 'விமர்சனங்கள்' அட்டவணையில் இருந்து 'customer_id', 'created_at', 'rating' மற்றும் 'next_rating' (காலப்போக்கில் அதே வாடிக்கையாளரின் அடுத்த மதிப்பாய்வு) பிரித்தெடுக்கப்பட்டது. எனவே 'customer_id' மூலம் பிரித்து, 'created_at' மூலம் ஆர்டர் செய்து, சரியான சாளர செயல்பாட்டைப் பயன்படுத்தி முன்னோக்கிப் பார்க்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

லீட்() உடன் பிரித்தல் மற்றும் ஓவரில் ஆர்டர் செய்யவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்