выберите сумму, где сумма - PullRequest
       4

выберите сумму, где сумма

1 голос
/ 04 августа 2010

Я хочу выбрать несколько записей на основе условия max + sum.

mytable
----------
id | col1 | col2

Я хочу выбрать все записи, у которых сумма col1 и col2 больше или равна максимальной сумме минусX. (не спрашивайте меня, почему :))

До сих пор мне удавалось получить сумму ОК (в дальнейшем именуемую как «общая») с:

SELECT id,SUM(col1 + col2) AS total FROM mytable GROUP BY id;

Мне также удалосьполучите МАКС. суммы ОК (хотя с обходным решением ORDER BY / LIMIT):

SELECT id,SUM(col + col) as total FROM mytable GROUP BY id ORDER BY total DESC LIMIT 1;

Однако каждый раз, когда я пытаюсь повторно использовать мой псевдоним как условие (например, ГДЕ итого> = ...)Я получаю «Неизвестная колонка» ошибка

Все будет с благодарностью

Ответы [ 2 ]

6 голосов
/ 04 августа 2010

У вас есть некоторые неправильные представления о SUM.SUM - это агрегирующая функция, которая означает, что она работает со многими записями, а не только с одной.
Чтобы вычислить сумму двух полей на запись, вы должны использовать только оператор +.

SELECT id, col1+col2 AS 'total'
FROM T1
WHERE
(col1+col2+x) >=(SELECT MAX(col1+col2) from T1)
1 голос
/ 04 августа 2010

Если вы используете group by, вам нужно будет использовать фразу:

SELECT id,SUM(col1+col2) as total FROM mytable GROUP BY id ORDER BY total HAVING total >= x
...