mysql - SQL GROUPBY 和 SUM OF A COLUMN

标签 mysql sql

我有一个具有以下结构的表

+------------+--------+------------------+-----+
|    E_DATE    | CLIENT |       TIME       | INS |
+------------+--------+------------------+-----+
| 2015-06-04 | comA   | 0.00478515625    |  a1 |
| 2015-06-04 | comA   | 0.0025390625     |  a1 |
| 2015-06-04 | comA   | 0.0              | a1  |
| 2015-06-04 | comA   | 0.0              | a1  |
| 2015-06-04 | comB   | 0.0115234375     | a2  |
| 2015-06-04 | comB   | 1.953125E-4      | a2  |
| 2015-06-04 | comB   | 0.0103515625     | a3  |
| 2015-06-04 | comB   | 0.0              | a3  |
| 2015-06-05 | comA   | 0.00478515625    | a4  |
| 2015-06-05 | comA   | 0.0025390625     | a4  |
| 2015-06-05 | comA   | 0.0              | a1  |
| 2015-06-05 | comA   | 0.0              | a2  |
| 2015-06-05 | comB   | 0.010351         | a1  |
| 2015-06-05 | comB   | 0.05625          | a1  |
+------------+--------+------------------+-----+

我希望获得以下输出 -

+------------+--------+-----+-----------------------------------------------------------+ 
|    E_DATE    | CLIENT | INS |                        TOTAL_TIME                         |
+------------+--------+-----+-----------------------------------------------------------+
| 2015-06-04 | comA   | a1  | SUM of TIME for a1 for comA for the date in 'E_DATE' column |
| 2015-06-04 | comB   | a2  | SUM of TIME for a2 for comA for the date in 'E_DATE' column |
| 2015-06-04 | comB   | a3  | SUM of TIME for a3 for comA for the date in 'E_DATE' column |
| 2015-06-05 | comA   | a1  | SUM of TIME for a1 for comA for the date in 'E_DATE' column |
| 2015-06-05 | comA   | a2  | SUM of TIME for a2 for comA for the date in 'E_DATE' column |
| 2015-06-05 | comA   | a4  | SUM of TIME for a2 for comA for the date in 'E_DATE' column |
| 2015-06-05 | comB   | a1  | SUM of TIME for a1 for comA for the date in 'E_DATE' column |
+------------+--------+-----+-----------------------------------------------------------+

这是实现此目标的正确查询吗?

select E_DATE, CLIENT,INS,SUM(INS) AS TOTAL_TIME GROUP BY E_DATE,CLIENT

最佳答案

如果我理解正确,那么这应该是答案,否则我/我们将需要您预期结果中 TOTAL_TIME 列的实际数字:

SELECT E_DATE,
       CLIENT,
       INS,
       (SELECT SUM(time)
        FROM   mytable b
        WHERE  a.E_DATE = b.E_DATE
               AND a.INS = b.INS
               AND b.CLIENT = 'comA') TOTAL_TIME
FROM   mytable a
GROUP  BY E_DATE,CLIENT,INS 

注意:假设倒数第二行的 INS 根据逻辑是 a4

SQL Fiddle

关于mysql - SQL GROUPBY 和 SUM OF A COLUMN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31049397/

相关文章:

mysql - 一对多地理空间搜索

php - 检查 MySQL 中是否存在记录(使用 PHP)?

php - 匹配不同顺序单词的 SQLWhere 语句

MySql 条件停止脚本执行

mysql - 如何将 DISTINCT 与 JOIN 结合使用?

mysql - 在 when 子句中替换 MySQL 查询中的空值

mysql - 为什么 phpmyadmin 结果中的估计行数差异很大?

mysql - LEFT JOIN 没有得到想要的结果

mysql - 我必须查询两次才能得到这个结果吗?

php - MySQL 透视将行变成列