Middle — Senior
როგორ ითვლება მედიანა SQL-ში ინტეგრირებული ფუნქციის გარეშე? როგორ ითვლება სვეტების რაოდენობა ტაბლოში? იცით თუ არა ფანჯრის ფუნქციები?
sobes.tech AI
პასუხი AI-სგან
SQL-да встроенная функциясыз медиана есептеу үшін терезе функцияларын немесе ішкі сұрауларды қолдануға болады. Мысалы, value атты сандық бағаны бар кесте үшін:
SELECT AVG(value) AS median FROM (
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn, COUNT(*) OVER () AS cnt
FROM your_table
) sub
WHERE rn IN ((cnt + 1) / 2, (cnt + 2) / 2);
Мұнда:
ROW_NUMBER()мәні бойынша жолдарды өсіп келе жатқан ретімен нөмірлейді.COUNT(*) OVER ()жалпы жолдар санын есептейді.- Екі орталық элементтің орташа мәні есептеледі (жұп санды жағдайда) немесе бір орталық (таза санды жағдайда).
Кестедегі жолдар санын есептеу өте оңай:
SELECT COUNT(*) FROM your_table;
Терезе функциялары — бұл функциялар, ағымдағы жолмен байланысты жолдар жиынында есептеулер жүргізеді, нәтижені бір жолға қысқармайды (агрегаттық функциялардан айырмашылығы). Олар рангтау, қозғалыс сомалары, медианалар және т.б. үшін пайдалы.
Терезе функциясының мысалы:
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;
Бұл value бойынша жолдарды өсіп келе жатқан ретімен нөмірлейді.