SQL Groupe int by groupe和date

时间:2018-02-15 18:56:53

标签: mysql sql select

我有一个mysql数据库,我想发一个SQL请求,但我没有成功。我想要这个:

    date   | groupe1 | groupe2 | groupe3 | TOTAL
2018-02-15 | 1.3     |  4      |  0      | 5.3
2018-02-14 |  0      | 6.1     |  0      | 6.1
2018-02-13 | 0       | 5.4     | 4.9     | 10.3

但根据我的要求,我有这个:

    date   | groupe1 | groupe2 | groupe3 | TOTAL
2018-02-15 |  0      |  4      |  0      | 4.0
2018-02-15 | 1.3     |  0      |  0      | 1.3
2018-02-14 |  0      | 6.1     |  0      | 6.1
2018-02-13 | 0       | 5.4     |  0      | 5.4
2018-02-13 | 0       | 0       | 3.9     | 3.9
2018-02-13 | 0       | 0       | 1       | 1

这是我的要求:

SELECT date, groupe1, groupe2, groupe3, ROUND(groupe1 + groupe2+ groupe3, 1 ) AS TOTAL
FROM lesGroupes
WHERE journal LIKE journal1 OR 
      journal LIKE  journal2

所以我想转置数据以通过groupe和日期显示单个数字

谢谢avance, 晚上好。

3 个答案:

答案 0 :(得分:1)

类似的东西:

SELECT date, 
    SUM(groupe1), 
    SUM(groupe2), 
    SUM(groupe3), 
    SUM(ROUND(groupe1 + groupe2+ groupe3, 1))
FROM yourTable
WHERE journal LIKE journal1 OR journal LIKE journal2
GROUP BY date

答案 1 :(得分:1)

您需要按日期aggregate进行数据分组

Update my_table 
set lat = right(substr(mycolumn, 1, locate(' ',mycolumn) -1) , 
             length(substr(mycolumn, 1, locate(' ',mycolumn) -1)) -1),

    lng = right(substr(my_column, locate(' ',my_column)+1, 100), 
              length(substr(my_column, locate(' ',my_column)+1, 100))-1)

答案 2 :(得分:1)

这是一个非常简单的总和和组:

SELECT `date`, SUM(groupe1), SUM(groupe2), SUM(groupe3), SUM(groupe1+groupe2+groupe3)
FROM yourTable
WHERE journal IN ('journal1', 'journal2')
GROUP BY `date`

注意:date是一个保留字,您应该避免将其用作列名,否则会让您头疼。您还可以将LIKE..etc简化为IN()(除非您需要搜索部分字符串,否则应使用=代替LIKE。)