2016-09-10 4 views
-1

Моя MySQL таблица:Получить количество строк со значениями меньше, чем значение текущей строки

Id | value | count_of_past_lower_values 
1 | 120 | 0 
2 | 210 | 1 
3 |150  | 1 
4 |140  | 1 
5 |200  | 3 

Учитывая идентификатор и значения, я должен обновить 3-е кол. Я сделал запрос, используя SUM(IF(value<X,1,0)), но не в состоянии определить правильное выражение для X.

+0

Что вас пытаться ? –

ответ

2

эмитенте самостоятельной левой присоединиться к условной сумме будет достаточно:

select 
    a.id, 
    a.value, 
    sum(case when a.value > b.value then 1 else 0 end) as count_of_past_lower_values 
from yourtable a 
left join yourtable b on a.id > b.id 
group by a.id, a.value 
order by a.id 

Результат

id | value | count_of_past_lower_values 
----+-------+---------------------------- 
    1 | 120 |       0 
    2 | 210 |       1 
    3 | 150 |       1 
    4 | 140 |       1 
    5 | 200 |       3 
Смежные вопросы