Как создать запрос для фильтрации по общей сумме столбца таблицы mysql - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть количество данных, которые я хочу отфильтровать в зависимости от суммы данных, пример, который будет понятен: у меня есть эта таблица

Nombre | nit | cantidad 
andres | 222 | 1.5
joseff | 555 | 2
juanca | 777 | 3.5
ivanll | 999 | 4
amxsof | 111 | 6.1

Запрос должен был бы сделать, спросить из этой таблицы строки, у которых SUM столбца cantidad равен или меньше (но максимально близко), чем 13, и я бы возвратил следующее:

Nombre | Nit | Cantidad 
joseff | 555 | 2
ivanll | 999 | 4
amxsof | 111 | 6.1

, потому что сумма 2 + 4 + 6,1 = 12,1, что является ближайшей суммой к 13, что может быть сделано с записями

1 Ответ

0 голосов
/ 16 февраля 2020

SQL не является оптимальным для этого типа задачи оптимизации. Вы можете сделать это, но это грубая сила.

Также полезно, если вы ограничиваете количество строк, которые вы рассматриваете. Например, если вы рассматриваете комбинации до 4:

select t1.nombre, t2.nombre, t3.nombre, t4.nombre,
       (coalesce(t1.cantidad, 0) + coalesce(t2.cantidad, 0) + coalesce(t3.cantidad, 0) + coalesce(t4.cantidad, 0)
       ) as total
from t t1 left join
     t t2
     on t1.nombre < t2.nombre left join
     t t3
     on t2.nombre < t3.nombre left join
     t t4
     on t3.nombre < t4.nombre
where (coalesce(t1.cantidad, 0) + coalesce(t2.cantidad, 0) + coalesce(t3.cantidad, 0) + coalesce(t4.cantidad, 0)
       ) <= 13
order by total desc
limit 1;

Здесь - это db <> скрипка.

Если вы хотите рассмотреть дополнительные комбинации, вы Можно добавлять дополнительные объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...