如何根据重复的行列值为列添加值?

时间:2018-02-22 09:07:53

标签: mysql sql group-by repeat

我有一个使用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
  

书籍部分目前并不重要,因此可以排除

4 个答案:

答案 0 :(得分: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

因此压抑了书籍.2。

无论如何,每章都会使用GROUP BY chapter获得一个结果行。您可以获得SUM的总和。

select chapter, sum(price)
from chapters
group by chapter;
order by chapter;

答案 1 :(得分:0)

你试过DISTINCT吗?

SELECT DISTINCT x
from table1
where example = example2

答案 2 :(得分: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

答案 3 :(得分:0)

它只能用一个表来实现

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