משכורת חציונית
הי,
יש לי טבלה עם 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
הי,
יש לי טבלה עם 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