Как добавить значения для столбцов на основе значения столбца в повторяющейся строке?

0

У меня есть таблица значений, которую я выбираю из базы данных с помощью sql.

SELECT

  a.Chapter, a.price, b.book

FROM 

  Table1 a, Table2 b, Table3 c

WHERE

  a.id = c.id and b.id = c.id2

GROUP BY

  a.Chapter, a.price

ORDER BY

  a.Chapter

Значения, которые он возвращает:

|Chapter|Price|book|
|_______|_____|____|
|01     | 25  |eg1 |
|01     | 23  |eg2 |
|01     | 9   |eg3 |
|02     | 15  |eg4 |
|02     | 89  |eg5 |
|02     | 11  |eg6 |
|02     | 3   |eg7 |
|02     | 25  |eg8 |

Как я могу взять цены на каждый повторяющийся 01 (который находится в формате строки, потому что это не глава книги) и добавить их вместе и сделать их новой ценой? Например:

Chapter   Price
   01      57   
   02      143

Часть книги на данный момент не очень важна, поэтому ее можно исключить

  • 1
    Кто научил вас такого рода соединениям? Они были сокращены в 1992 году и больше не должны использоваться. Вместо этого используйте правильные объединения: from books b join chapters c on c.book_id = b.book_id .
  • 1
    @YogeshSharma СПАСИБО !!! Это работает как шарм
Показать ещё 3 комментария
Теги:
group-by

4 ответа

1
Лучший ответ

То, что вы делаете, неверно. Вы группируете по разделам и цене, но также выбираете книгу. Эта книга будет одной из книг, соответствующих главе и цене, произвольно выбранной. Итак, с этими данными

book chapter price
eg1  01      25
eg1  02      30
eg2  01      25
eg3  01      30

вы можете получить

book chapter price
eg1  01      25
eg1  02      30
eg3  01      30

тем самым подавляя книгу eg2.

Во всяком случае, вы получаете строку результатов в каждой главе с главой GROUP BY chapter. Вы получаете сумму с SUM.

select chapter, sum(price)
from chapters
group by chapter;
order by chapter;
  • 0
    Я вижу, я вижу ... спасибо ... Я сделал, как вы предложили, и это сработало ... Спасибо за вашу помощь
0

Это может быть достигнуто только с одной таблицей

SELECT
  a.Chapter, SUM(a.price) as price
FROM 
  Table1 a
GROUP BY
  a.Chapter
ORDER BY
  a.Chapter
0

Вы пробовали DISTINCT?

SELECT DISTINCT x
from table1
where example = example2
  • 0
    думаю, я понимаю, что ты говоришь, andyes
0
SELECT a.Chapter, sum(a.price)
FROM Table1 a
INNER JOIN Table3 c on c.id = a.id
INNER JOIN Table2 b on b.id = c.id
GROUP BY
  a.Chapter
ORDER BY
  a.Chapter
  • 0
    оба внутренних соединения в этом случае бесполезны, у него уже есть выбранный ответ.
  • 0
    Отредактируйте свой ответ и объясните сообществу, а не мне;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню