72 похожих чатов

Доброго времени суток! SELECT A.user_id, B.full_name, SUM(A.subtotal) AS subtotal FROM cash_operations AS A


LEFT JOIN users AS B ON A.user_id = B.id;

в таблице cash_operations есть 2 разных id пользователя, но запрос возвращает только одного

И это происходит только тогда когда есть строка SUM(A.subtotal) AS subtotal в селекте.

Как получить все записи?

21 ответов

25 просмотров

попробовать убрать SUM()? наверно поэтому у вас группируется одинаковые записи

Шукур- Автор вопроса
𝑀𝓇. 𝐼𝓈𝓀𝒶𝓃𝒹𝒶𝓇️ ️Xandamov
попробовать убрать SUM()? наверно поэтому у вас гр...

SELECT B.full_name, DATE(created_at) as created_at, SUM(CASE WHEN A.type = "cash" THEN subtotal ELSE 0 END) as cash, SUM(CASE WHEN A.type = "paycard" THEN subtotal ELSE 0 END) as paycard, SUM(CASE WHEN A.type = "paysys" THEN subtotal ELSE 0 END) as paysys, SUM(CASE WHEN A.type = "self" THEN subtotal ELSE 0 END) as self, SUM(CASE WHEN A.type = "debt" THEN subtotal ELSE 0 END) as debt, SUM(subtotal) as subtotal FROM cash_operations AS A LEFT JOIN users as B ON B.id=A.user_id WHERE A.created_at > DATE("now","-1 day") Я хочу вывести итоговое значение продаж у пользователей по типу продажи (cash_operations.type)

Шукур- Автор вопроса

Видимо, дело в null'ах. Я бы начал с замены sum(x) на sum(case when x is null then 0 else x end).

Шукур- Автор вопроса
Pavel
Видимо, дело в null'ах. Я бы начал с замены sum(x)...

Дело в том что там нету null значений нигде

Шукур
Дело в том что там нету null значений нигде

Точно? А почему тогда left join а не inner?

Шукур- Автор вопроса
Pavel
Точно? А почему тогда left join а не inner?

null возможно будут, но в данных записях нету

Шукур- Автор вопроса
Pavel
Точно? А почему тогда left join а не inner?

Я пробовал сгруппировать по user_id, но расчеты неправильно выводятся

Шукур- Автор вопроса
𝑀𝓇. 𝐼𝓈𝓀𝒶𝓃𝒹𝒶𝓇️ ️Xandamov
screenshot у меня правильно получилось

А если в таблицу Data еще и типы (cash, mastercard, paypal) добавить и суммировать по типу?

У тебя запрос неверный, должна быть фраза GROUP BY

Это не оконные, это агрегирующие функции... Но совет полезный

Шукур
SELECT B.full_name, DATE(created_at) as created_a...

Учи SQL, блин! Все поля из списка вывода запроса, не находящиеся под агрегирующими фунциями , должны быть указаны во фразе GROUP BY. На сервере MySQL есть параметр, который включает жёсткое соблюдение правил ANSI SQL — включи его, и такие запросы автоматом будут признаваться у тебя ошибочными (какие они и есть на самом деле), и тебе не удастся послать неверный запрос.

Группировка помогла...

Ilya Zviagin
Группировка помогла...

немного раннее был вопрос как можно взять не нулл поля при группировке вопрос удалили но стало интересно как это можно реализовать как примерно не подскажешь?

𝑀𝓇. 𝐼𝓈𝓀𝒶𝓃𝒹𝒶𝓇️ ️Xandamov
немного раннее был вопрос как можно взять не нулл ...

Во-первых, почти все агрегаты игнорируют NULL. И это просто не нужно. Во-вторых, ты можешь явно написать выражение, где будешь заменять NULL на нужные тебе значения (ну, вдруг например тебе надо суммировать NULL как 1цу, или учитывать NULL в средних значениях как-то)

𝑀𝓇. 𝐼𝓈𝓀𝒶𝓃𝒹𝒶𝓇️ ️Xandamov
немного раннее был вопрос как можно взять не нулл ...

можно where до или having после в хороших СУРБД есть ещё и rollup cube GROUPING SETS часто много экономят на самоджойнах

Шукур- Автор вопроса
Ilya Zviagin
Учи SQL, блин! Все поля из списка вывода запроса,...

Я пробовал группировать, но забыл что фильтровал записи по дате и подумал что неправильно все выводится. Спасибо всем за помощь!

Ilya Zviagin
Во-первых, почти все агрегаты игнорируют NULL. И э...

https://sqlize.online/sql/psql14/836823aac5e396194b55fcbc6f9b0d99/ вот типо здесь надо вывести если возможно не null значения по group by username как примерно это можно?

Alexey Shlykov
оконные функции - это в какой СУБД?

Вообще, они вроде стандартные, в любой есть (или нет)

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта