mysql - 使用 MySQL 多次选择同一列

标签 mysql sql select

假设我有这样的东西:

MySQL 表

Date     | Name    |    Val
22/11    | a       |    1
22/11    | b       |    2
22/11    | a       |    3
22/11    | a       |    4
23/11    | b       |    1
23/11    | a       |    2
23/11    | a       |    3
23/11    | a       |    5

我需要一个查询,在一列上显示 Name = 'a' 时每一天的值总和,在另一列上显示所有值的总和(也是每一天)。

在我的示例中,结果将是这样的:

Date    | a.Total  |    Total
22/11   | 8        |    10
23/11   | 10       |    11

我试过这样的:

SELECT date, SUM(Val) AS a.Total, SUM(Val) AS Total FROM tbl1 Where Name = 'a' 

关键是我需要指定一个 WHERE 子句来获取“a.total”值 (WHERE Name = 'a'),但我不希望它应用于获取总数。
我也尝试过使用 Left Join 进行查询,但没有成功。

非常感谢任何帮助。

最佳答案

您应该在第一个 SUM() 中使用 GROUP BYCASE

SELECT date, 
SUM( CASE WHEN Name='a'
          THEN Val
          ELSE 0
     END) AS a_Total, 
SUM(Val) AS Total 

FROM tbl1 
GROUP BY `Date`

SQLFiddle demo

关于mysql - 使用 MySQL 多次选择同一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288015/

相关文章:

java - 如何创建表 postgresql Heroku?

python - 如何允许 django 管理员将字段设置为 NULL?

javascript - 选择 h1 内的文本 - javascript

php - Laravel使用ajax刷新数据库记录更新页面

mysql - 从 MySQL 表中更新 x 行

sql - oracle中二进制字段(blob)的条件(如“like”)

javascript - Jquery:选择一个 href 链接并使用 'each' 方法进行导航

mysql - MySQL选择查询使用如果行中有逗号分隔的值

php - 在 Laravel 中获取插入行的 ID

mysql - 如何使用 Go 和 go-sql-driver 连接到 mysql 服务器?