Итак, у меня есть:
CREATE TABLE A (id INT,type int,amount int);
INSERT INTO A (id,type,amount) VALUES (1,0,25);
INSERT INTO A (id,type,amount) VALUES (2,0,25);
INSERT INTO A (id,type,amount) VALUES (3,1,10);
CREATE TABLE B (id INT,A_ID int,txt text);
INSERT INTO B (id,A_id,txt) VALUES (1,1,'abc');
INSERT INTO B (id,A_id,txt) VALUES (2,1,'def');
INSERT INTO B (id,A_id,txt) VALUES (3,2,'xxx');
Я запускаю этот запрос:
SELECT min(A.id), SUM(A.amount), COUNT(B.id) FROM A
LEFT JOIN B ON A.id = B.A_id
GROUP BY A.type
Я получаю:
min(A.id) SUM(A.amount) COUNT(B.id)
1 75 3
3 10 0
Но вместо этого я ожидаю получить:
min(A.id) SUM(A.amount) COUNT(B.id)
1 50 3
3 10 0
Может кто-нибудь помочь?Как лучше всего достичь этого точного результата?Я хочу, чтобы группа BY типа и получить СУММУ сгруппированных A.amount и получить count () для всех B, соответствующих его внешнему ключу.
вот репро: https://www.db -fiddle.com / f/ esu13uGLcgFDpX7aEQRMJR / 0 пожалуйста, ВЫПОЛНИТЕ код sql.
РЕДАКТИРОВАТЬ, чтобы добавить более подробную информацию: я знаю результат правильный , если я удаляю группу по, мы видим 1, 50, 2 2, 25, 1
Но я ожидаю вышеуказанного результата, как лучше всего его достичь?Я хочу сделать СУММУ ТИПА, а затем сосчитать все B, связанные с этой группой A