தொகுதி பாடங்கள் (3/4)
தரவரிசைகள்: ROW_NUMBER, RANK மற்றும் DENSE_RANK
தரவரிசைகள்: ROW_NUMBER, RANK மற்றும் DENSE_RANK
திரட்டுவதற்கு அப்பால், சாளர செயல்பாடுகள் வரிசைப்படுத்துதல் மற்றும் தரவரிசையில் பிரகாசிக்கின்றன. வரிசை எண்கள் அல்லது தரவரிசை நிலைகளை ஒதுக்கும் விண்டோக்களில் (OVER() கட்டாயமாகிறது) வேலை செய்ய வடிவமைக்கப்பட்ட செயல்பாடுகள் உள்ளன.
அவற்றை ஒரு அளவுகோலுக்கு எதிராகச் செய்ய, நாம் ORDER BY விதியைப் பயன்படுத்த வேண்டும் OVER().
தரவரிசை மூவர்
ROW_NUMBER(): ஒவ்வொரு வரிசைக்கும் ஒரு வெற்று வரிசை எண்ணை (1, 2, 3...) ஒதுக்கி, தன்னிச்சையாக உறவுகளை உடைக்கிறது.RANK(): "ஒலிம்பிக்ஸ்" விளைவை உருவாக்குகிறது: 1, 2, 2, 4. இது ஒரு இடைவெளியை விட்டு ("3" தவிர்க்கப்பட்டது) மற்றும் உறவுகளின் போது அதே தரவரிசையை ஒதுக்குகிறது.DENSE_RANK(): ரேங்க்களை அடர்த்தியாக்குகிறது: 1, 2, 2, 3. டைக்கு பிறகு இடைவெளி இருக்காது.
SELECT
product_name,
price,
RANK() OVER(ORDER BY price DESC) AS price_rank
FROM products;PARTITION BY மற்றும் ORDER BY ஐ OVER() க்குள் இணைப்பதன் மூலம் "ஒவ்வொரு வகையிலும் முதல் 3 இடங்களைப்" பெறலாம்!
வாடிக்கையாளர்கள் அட்டவணையில் ('வாடிக்கையாளர்கள்') 'first_name', 'last_name' மற்றும் 'id' ஆகியவற்றைப் பிரித்தெடுக்கவும் ('id' என்பது அடையாளங்காட்டி எண் என்று வைத்துக் கொள்வோம்). DENSE_RANK()ஐப் பயன்படுத்தி 'ஐடி' இறக்கத்தின் அடிப்படையில் 'ரேங்க்' நெடுவரிசையைச் சேர்க்கவும் (அதிகத்திலிருந்து குறைந்த வரை).
குறிப்பைக் காட்டு
DENSE_RANK() OVER(ORDER by id DESC).
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
தயாரிப்புகளின் ('தயாரிப்புகள்') விலையின் அடிப்படையில் ஒவ்வொரு 'category_id'க்கும் தரவரிசையை உருவாக்கவும். 'category_id', 'id', 'price' ஆகியவற்றைப் பிரித்தெடுத்து, ROW_NUMBER() ஐப் பயன்படுத்தி இறங்கு 'விலை' வரிசையில், 'category_id' மூலம் பிரித்து 'price_rank' ஐச் சேர்க்கவும்.
குறிப்பைக் காட்டு
OVER இன் உள்ளே விலை DESC மூலம் வகை_ஐடி ஆர்டர் மூலம் பிரிவை இணைக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்