משכורת חציונית

פנורמן

New member
משכורת חציונית

הי,

יש לי טבלה עם 200,000 רשומות עם משכורות של עובדים.

על מנת למצוא את המשכורת החציונית סידרתי אותה מהמשכורת הנמוכה לגבוהה, והוצאתי את המשכורת ה-100,000. ליתר דיוק, מכיוון שמספר הרשומות הוא זוגי אז עשיתי ממוצע בין המשכורת ה-100,000 למשכורת ה-99,999. השאלה שלי היא איך אני הופך את הקוד הנראה למטה לגנרי? איך אני הופך את הקוד כך שיתאים לכל טבלה שהיא לא משנה מה מספר הרשומות?

אם N הוא מס' השורות בטבלה אז אני רוצה שבמקום הפקודה Limit 1, 99999 יהיה Limit 1, N/2-1. ניסיתי להשתמש בפקודה Count אבל זה לא עובד עם Limit...

select (MidTable1.median1 + MidTable2.median2)/2 AS 'Median Salary'
from (
SELECT max(salary) AS median1
FROM(
SELECT salary
FROM facts_table
ORDER by salary ASC
LIMIT 1,99999
) InnerTable1)MidTable1,
(
SELECT max(salary) AS median2
FROM(
SELECT salary
FROM facts_table
ORDER by salary ASC
LIMIT 1,100000
) InnerTable2)MidTable2
 

gilbmx

New member
אתה יכול להגדיר משתנים

למשתנים תכניס מספר רשומות ע"פ שאילתה מקדימה. לאחר מכן תשתמש בהם בשאילתה שלך.
 
למעלה