Учитывая следующую таблицу:
id value
------- -------
0 1
1 6
2 7
3 9
4 2
5 20
6 21
7 3
Мне интересно, есть ли способ выбрать отдельные строки, где есть разница между (целочисленными) значениями (например) 3, давая приоритет id (низкое значение id = больше приоритета). Программно, я бы перебрал значения, начиная с id = 0 и отбрасывая строки, где значение, по сравнению с моим текущим списком, имеет разницу меньше 3. Вот пример из C, чтобы дать идею:
std::vector<int> filtered_values;
for (int i=0; i<values.size();i++)
{
bool update = true;
for (int j=0; j<filtered_values.size();j++)
{
if (abs(filtered_values[j]-values[i]) < 3) {
update = false;
break;
}
}
if (update)
filtered_values.push_back(values[i]);
}
Возможно ли выполнить эту фильтрацию в SQL?
Результат, учитывая исходную таблицу, будет:
id value
------- -------
0 1
1 6
3 9
5 20