ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 13 · 4లో పాఠం 3కోర్సులో 51/57~15 min
మాడ్యూల్ పాఠాలు (3/4)

ర్యాంకింగ్‌లు: ROW_NUMBER, RANK మరియు DENSE_RANK

ర్యాంకింగ్‌లు: ROW_NUMBER, RANK మరియు DENSE_RANK

అగ్రిగేటింగ్‌కు మించి, విండో ఫంక్షన్‌లు ఆర్డర్ మరియు ర్యాంకింగ్‌లో మెరుస్తాయి. విండోస్ లోపల పని చేయడానికి ప్రత్యేకంగా రూపొందించబడిన ఫంక్షన్‌లు ఉన్నాయి (OVER() తప్పనిసరి అవుతుంది) అవి సీక్వెన్షియల్ నంబర్‌లు లేదా ర్యాంకింగ్ స్థానాలను కేటాయించాయి.

వాటిని ఒక ప్రమాణానికి విరుద్ధంగా పని చేయడానికి, మేము ORDER BY నిబంధన **లోపల OVER()**ని ఉపయోగించాలి.

ర్యాంకింగ్ త్రయం

  1. ROW_NUMBER(): ప్రతి అడ్డు వరుసకు ఒక సాదా సీక్వెన్షియల్ నంబర్ (1, 2, 3...) కేటాయిస్తుంది, ఏకపక్షంగా సంబంధాలను విచ్ఛిన్నం చేస్తుంది.
  2. RANK(): "ఒలింపిక్స్" ప్రభావాన్ని ఉత్పత్తి చేస్తుంది: 1, 2, 2, 4. ఇది ఖాళీని వదిలివేస్తుంది ("3" దాటవేయబడింది) మరియు సంబంధాల విషయంలో అదే ర్యాంక్‌ను కేటాయిస్తుంది.
  3. DENSE_RANK(): ర్యాంక్‌లను డెన్సిఫై చేస్తుంది: 1, 2, 2, 3. టై తర్వాత ఎప్పుడూ గ్యాప్ ఉండదు.
SQL
SELECT
  product_name,
  price,
  RANK() OVER(ORDER BY price DESC) AS price_rank
FROM products;

PARTITION BY మరియు ORDER BYని OVER() లోపల కలపడం ద్వారా మేము "ప్రతి వర్గానికి మొదటి 3ని" పొందవచ్చు!

వ్యాయామం#sql.m13.l3.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

కస్టమర్‌ల పట్టిక ('కస్టమర్‌లు') నుండి 'మొదటి_పేరు', 'చివరి_పేరు' మరియు 'ఐడి'ని సంగ్రహించండి ('ఐడి' ఐడెంటిఫైయర్ నంబర్‌గా భావించండి). 'id' అవరోహణ (అత్యధిక నుండి అత్యల్పానికి) ఆధారంగా DENSE_RANK()ని ఉపయోగించి 'ర్యాంక్' నిలువు వరుసను జోడించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

DENSE_RANK() OVER(ORDER by id DESC).

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#sql.m13.l3.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఉత్పత్తుల ధర ('ఉత్పత్తులు') ఆధారంగా ప్రతి 'category_id'కి ర్యాంకింగ్‌ను రూపొందించండి. 'category_id', 'id', 'price'ని సంగ్రహించి, 'category_id' ద్వారా విభజన చేసి, అవరోహణ 'ధర' క్రమంలో ROW_NUMBER()ని ఉపయోగించి 'price_rank'ని జోడించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

OVER లోపల ధర DESC ద్వారా కేటగిరీ_ఐడి ఆర్డర్ ద్వారా విభజనను కలపండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది