Привет, антуаны. Нужна помощь шаращих в SQL.Суть такова: Удалить информацию о всех начислениях тех абонентов, которыми было сделано более 3 оплат со значениями ниже среднего значения оплат всех абонентов.Мой запрос:DELETE FROM nachislsumma WHERE accountcd IN(SELECT accountcd FROM nachislsumma GROUP BY accountcd HAVING COUNT(nachislsum)>3)AND nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma);Он удаляет только те записи, значения которых в столбце NACHISLSUM меньше среднего по таблице (~166). А нужно чтобы удалялись все записи аккаунта, у которого таковые имеются.Может кто помочь? Таблица на пике.
>>143078327 (OP)А, нет, таблица на пике уже после моего кривого запроса. Но сути это не меняет.
>>143078327 (OP)>AND nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma);>Он удаляет только те записи, значения которых в столбце NACHISLSUM меньше среднего по таблице
DELETE FROM nachislsumma WHERE accountcd IN(SELECT accountcd FROM nachislsumma FROM nachislsumma WHERE nachislsum<(SELECT AVG(nachislsum) GROUP BY accountcd HAVING COUNT(nachislsum)>3);Не уверен, что синтаскически верно, но посмотри в этом направлении, думаю поймешь в чем была ошибка
>>143078389Да, я вижу ошибку, но не могу придумать правильный запрос.
>>143078509Если я тебя правильно понял, то синтаксически верным твой вариант будет таким:DELETE FROM nachislsumma WHERE accountcd IN(SELECT accountcd FROM nachislsumma WHEREnachislsum<(SELECT AVG(nachislsum) FROM nachislsumma HAVING COUNT(nachislsum)>3));Но он удаляет все строки из таблицы.
>>143079098DELETE FROM nachislsumma WHERE accountcd IN(SELECT accountcd FROM nachislsumma WHEREnachislsum<(SELECT AVG(nachislsum) FROM nachislsumma) HAVING COUNT(nachislsum)>3);Скобочку только не в том месте поставил, попробуй так
>>143079222А и group by потерял...
>>143079324Кажись работаетDELETE FROM nachislsumma WHERE accountcd IN(SELECT accountcd FROM nachislsumma WHEREnachislsum<(SELECT AVG(nachislsum) FROM nachislsumma)GROUP BY 1 HAVING COUNT(nachislsum)>3);Спасибо, анон.
>>143079575Учись хорошо, сынок