Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
1

Подсчет суммы

23.01.2016, 16:35. Показов 684. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим есть две связанные таблицы

Table1
Id Some
1 A
2 B
3 C
4 D
5 E
6 F

Table2
SomeId Val
1 10
1 15
2 20
2 25
3 30
3 35

Как получить сумму по каждой строке Table1 суммирую значения из соответстующих записей Table2 и если таких записей нет то ставить 0 ?

Т.е получить следующий вывод:
Id Some Sum
1 A 25
2 B 45
3 C 65
4 D 0
5 E 0
6 F 0

БД SQLite

Добавлено через 18 минут
Как обычно запостил тему и пришло озарение: нужно использовать LEFT JOIN и COALESCE(SUM(Val),0)

Тогда такой вопрос- можно ли без использования JOIN составить запрос?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2016, 16:35
Ответы с готовыми решениями:

Запрос на подсчет суммы
Здравствуйте. Мне надо создать такой набор данных, в котором после кождого месяца должна считаться...

Запрос на подсчет суммы с двух таблиц
Доброго времени суток) Есть бд сервис центр, для запроса нужны 4 таблицы - т.заказы(код_заказа,...

Подсчет суммы нескольких строк в столбец
Добрый день. В sql не силен, делаю простую морду на c++ builder для обработки таблиц (бд на ms sql...

Подсчёт % от общей суммы с учётом выборки
Здравствуйте. Возникло затруднение. Задача такая: Есть таблица (см. скрин1). Необходимо сделать...

11
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 10
24.01.2016, 15:09 2
Честно говоря - не уверен, но может так:

SQL
1
2
3
4
SELECT t1.Id, t1.Some, t2.Sum(Val)
FROM Table1 t1, Table2 t2
WHERE t1.Id = t2.SomeId
GROUP BY t1.Id
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.01.2016, 15:33  [ТС] 3
Krok, А как же
Цитата Сообщение от Avazart Посмотреть сообщение
и если таких записей нет то ставить 0 ?
0
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 10
24.01.2016, 15:43 4
Avazart, можно так попробовать:
SQL
1
nvl(SUM(t2.Val), 0)


Извиняюсь, наоборот:
SQL
1
SUM(nvl(t2.Val, 0))
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.01.2016, 16:20  [ТС] 5
Ну как я понимаю просто не попадет под условие
SQL
1
WHERE t1.Id = t2.SomeId
0
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 10
24.01.2016, 16:57 6
Avazart, да) и вернет null. А nvl конвертирует в 0) Как то так...
Пардон, какой то бред несу(((
0
478 / 391 / 112
Регистрация: 24.04.2012
Сообщений: 1,622
Записей в блоге: 3
25.01.2016, 09:19 7
Цитата Сообщение от Avazart Посмотреть сообщение
Тогда такой вопрос- можно ли без использования JOIN составить запрос?
Должно работать
SQL
1
SELECT id, SOME, (SELECT COALESCE(SUM(Table2.val),0) FROM Table2 WHERE Table2.SomeID = Table1.ID) AS SUM FROM Table1
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.01.2016, 11:37  [ТС] 8
Цитата Сообщение от Bit_Man Посмотреть сообщение
Должно работать
Еще раз: не попадет под условие
SQL
1
WHERE t1.Id = t2.SomeId
И там не полная сумма а по каждой записи с первой таблицы.

Вероятно нужно
SQL
1
WHERE t1.Id = t2.SomeId OR t2.SomeId IS NULL
COALESCE само собой.
0
Эксперт MS Access
17324 / 7150 / 1614
Регистрация: 21.06.2012
Сообщений: 13,498
25.01.2016, 14:00 9
Можно и без LEFT JOIN:
SQL
1
2
SELECT Id, [SOME], [SUM]  FROM Table1, (SELECT SomeId, SUM(Val) AS [SUM] FROM Table2 GROUP BY SomeId) AS Q1 WHERE Q1.SomeId=Id
UNION SELECT Id, [SOME], 0 AS [SUM]  FROM Table1 WHERE Id NOT IN (SELECT DISTINCT SomeId FROM Table2);
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.01.2016, 16:53  [ТС] 10
ltv_1953, Да работает...

Добавлено через 5 минут
Но Join выглядит более проще конечно
SQL
1
2
3
4
5
SELECT Table1.Id, Table1.Some, COALESCE(SUM(Table2.Val),0) 
FROM Table1
LEFT JOIN Table2
ON Table1.Id = Table2.SomeId 
GROUP BY Table1.Id
0
Эксперт MS Access
17324 / 7150 / 1614
Регистрация: 21.06.2012
Сообщений: 13,498
25.01.2016, 17:02 11
Цитата Сообщение от Avazart Посмотреть сообщение
Но Join выглядит более проще конечно
Угу. Да и быстрее, скорей всего.
0
478 / 391 / 112
Регистрация: 24.04.2012
Сообщений: 1,622
Записей в блоге: 3
26.01.2016, 03:28 12
Цитата Сообщение от Avazart Посмотреть сообщение
Еще раз: не попадет под условие
уверен?! подзапрос внимательней
Цитата Сообщение от Avazart Посмотреть сообщение
И там не полная сумма а по каждой записи с первой таблицы.
В смысле неполная сумма?
Цитата Сообщение от Avazart Посмотреть сообщение
OR t2.SomeId IS NULL
если у тебя в t2.SomeId есть нулевые значения, то их сумму ты добавишь ко всем значениям Table1
Цитата Сообщение от Avazart Посмотреть сообщение
GROUP BY Table1.Id
забыл группировку по Table1.SOME
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2016, 03:28
Помогаю со студенческими работами здесь

подсчёт суммы из 3-х таблиц
Доброго времени суток. Подскажите пожалуйста как сделать тригер подсчёта суммы чисел их 3-ч ...

Подсчет суммы периодов времени по строчно
Всем доброе время. Есть табличка, скрин прилагаю, в ней необходимо просуммировать интервалы времени...

Подсчет суммы
Ребят как мне сделать чтобы суммы вводилась сама

Подсчет суммы
Ребят помогите пожалуйста а то я не пойму.. как сделать чтобы в 2 таблицах автоматически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru