с проблемой некорректного вычисления count(*) в запросе - игнорируется условие where с агрегированными значениями. В итоге получается что запрос "select * from ..." возвращает 3000 строк, а если обернуть его в "select count(*) from..." вернет 3500 строк
Не сдерживайте себя. Приводите полные запросы
SELECT * FROM ( SELECT cons_id, gd_dtype, gd_archived, feat_archived, SUM(cons_stock.reserve_wait) as wait_reserve, SUM(cons_stock.reserve_order) as order_reserve, SUM(cons_stock.avgstockdays) AS rest_avgstockdays, SUM(cons_stock.coststock) AS rest_coststock, SUM(cons_stock.stock) AS rest_stock FROM consignment_stock cons_stock WHERE account_id = '...' AND cons_stock.__time <= '2021-09-21 10:59:53.572' AND cons_stock.momentto > '2021-09-21 10:59:53.572' GROUP BY cons_id, gd_dtype, gd_archived, feat_archived ) good_stock WHERE (rest_stock - order_reserve + wait_reserve) <> 0 Если заменить в самом начале * на count(*) то результат будет отличаться. В случае подсчета количества игнорится последнее условие из Where. Проблема проявляется только в случае использования в условии агрегатов. в данном случае используются rest_stock, order_reserve, wait_reserve
Обсуждают сегодня