Robię tam podzapytanie, bo całe zapytanie wygląda tak:
SELECT t1.value+(t1.value-t3.minimum)/2 AS up, t1.value AS m, t1.value-(t1.value-t3.minimum)/2 AS lq, AVG(t4.av) AS av, total FROM (SELECT @rownum:=@rownum+people_counter AS row_number, d.salary_base AS value FROM data_jobs d, (SELECT @rownum:=0) r WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48') ORDER BY d.salary_base) AS t1, (SELECT sum(people_counter) AS total FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t2, (SELECT MIN(salary_base) AS minimum FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t3, (SELECT AVG(salary_base) AS av FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t4 WHERE t1.row_number >= total*0.5 LIMIT 1
Mógłbym zrobić
SET @rownum:=0
ale to i tak nie pomoże. Problemem jest
@rownum:=@rownum+people_counter
który pomija mi where z jakiegoś powodu. Problem występuje tylko jeśli użyję IN. W przypadku where job_id = 45 nie ma problemu.