[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!


Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 9 | 2 | 3
Назад Вниз Каталог Обновить

Аноним 27/12/16 Втр 11:13:34  143078327  
daba0c94.png (45Кб, 572x549)
Привет, антуаны. Нужна помощь шаращих в 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). А нужно чтобы удалялись все записи аккаунта, у которого таковые имеются.
Может кто помочь? Таблица на пике.
Аноним 27/12/16 Втр 11:14:57  143078381
>>143078327 (OP)
А, нет, таблица на пике уже после моего кривого запроса. Но сути это не меняет.
Аноним 27/12/16 Втр 11:15:05  143078389
disappointed.jpg (68Кб, 596x608)
>>143078327 (OP)
>AND nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma);
>Он удаляет только те записи, значения которых в столбце NACHISLSUM меньше среднего по таблице
Аноним 27/12/16 Втр 11:18:10  143078509
DELETE FROM nachislsumma WHERE accountcd IN
(SELECT accountcd FROM nachislsumma FROM nachislsumma WHERE nachislsum<(SELECT AVG(nachislsum) GROUP BY accountcd HAVING COUNT(nachislsum)>3);

Не уверен, что синтаскически верно, но посмотри в этом направлении, думаю поймешь в чем была ошибка
Аноним 27/12/16 Втр 11:18:13  143078512
>>143078389
Да, я вижу ошибку, но не могу придумать правильный запрос.
Аноним 27/12/16 Втр 11:31:22  143079098
>>143078509
Если я тебя правильно понял, то синтаксически верным твой вариант будет таким:

DELETE FROM nachislsumma WHERE accountcd IN
(SELECT accountcd FROM nachislsumma WHERE
nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma HAVING COUNT(nachislsum)>3));

Но он удаляет все строки из таблицы.
Аноним 27/12/16 Втр 11:34:50  143079222
>>143079098

DELETE FROM nachislsumma WHERE accountcd IN
(SELECT accountcd FROM nachislsumma WHERE
nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma) HAVING COUNT(nachislsum)>3);

Скобочку только не в том месте поставил, попробуй так
Аноним 27/12/16 Втр 11:37:20  143079324
>>143079222
А и group by потерял...
Аноним 27/12/16 Втр 11:43:25  143079575
>>143079324
Кажись работает

DELETE FROM nachislsumma WHERE accountcd IN
(SELECT accountcd FROM nachislsumma WHERE
nachislsum<(SELECT AVG(nachislsum) FROM nachislsumma)
GROUP BY 1 HAVING COUNT(nachislsum)>3);

Спасибо, анон.
Аноним 27/12/16 Втр 11:44:44  143079641
>>143079575
Учись хорошо, сынок

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 9 | 2 | 3
Назад Вверх Каталог Обновить

Топ тредов
Избранное