Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何按日期对另一列和组的不同值求和?_Mysql_Sql - Fatal编程技术网

Mysql 如何按日期对另一列和组的不同值求和?

Mysql 如何按日期对另一列和组的不同值求和?,mysql,sql,Mysql,Sql,我们如何仅在同一日期对每个活动的金额求和,并为每个日期输出一行?此查询不起作用 SELECT SUM(amount), type, date FROM table GROUP BY DISTINCT date; 表格 +----+------------+-----------+---------+ | id | date | activity | amount | +----+------------+-----------+---------+ | 1 | 2017-12

我们如何仅在同一日期对每个
活动的
金额
求和,并为每个
日期
输出一行?此查询不起作用

SELECT SUM(amount), type, date FROM table GROUP BY DISTINCT date;
表格

+----+------------+-----------+---------+
| id |    date    | activity  | amount  |
+----+------------+-----------+---------+
| 1  | 2017-12-21 | Shopping  | 200     |
| 2  | 2017-12-21 | Gift      | 240     |
| 3  | 2017-12-23 | Give Away | 40      |
| 4  | 2017-12-24 | Shopping  | 150     |
| 5  | 2017-12-25 | Give Away | 120     |
| 6  | 2017-12-25 | Shopping  | 50      |
| 7  | 2017-12-25 | Shopping  | 500     |
+----+------------+-----------+---------+
要求的结果

+------------+-----------+------+-----------+
|    date    | Shopping  | Gift | Give Away |
+------------+-----------+------+-----------+
| 2017-12-21 | 200       | 240  |           |
| 2017-12-23 |           |      | 40        |
| 2017-12-24 | 150       |      |           |
| 2017-12-25 | 550       |      | 120       |
+------------+-----------+------+-----------+
使用:

使用:


你可以试试这个。它返回您想要的确切结果

SELECT t.date,
    SUM(t.shopping_amount) AS shopping,
    SUM(t.gift_amount) AS gift,
    SUM(t.give_away_amount) AS give_away
FROM
(
    SELECT p.`date`, p.`activity`, p.`amount` AS shopping_amount,
        0 AS gift_amount, 0 AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Shopping'

    UNION

    SELECT p.`date`, p.`activity`, 0 AS shopping_amount,
        p.amount AS gift_amount, 0 AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Gift'

    UNION 

    SELECT p.`date`, p.`activity`, 0 AS shopping_amount,
        0 AS gift_amount, p.amount AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Give Away'
) t
GROUP BY t.date

你可以试试这个。它返回您想要的确切结果

SELECT t.date,
    SUM(t.shopping_amount) AS shopping,
    SUM(t.gift_amount) AS gift,
    SUM(t.give_away_amount) AS give_away
FROM
(
    SELECT p.`date`, p.`activity`, p.`amount` AS shopping_amount,
        0 AS gift_amount, 0 AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Shopping'

    UNION

    SELECT p.`date`, p.`activity`, 0 AS shopping_amount,
        p.amount AS gift_amount, 0 AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Gift'

    UNION 

    SELECT p.`date`, p.`activity`, 0 AS shopping_amount,
        0 AS gift_amount, p.amount AS give_away_amount
    FROM products p
    WHERE p.`activity` = 'Give Away'
) t
GROUP BY t.date

嗯,除非您知道slaasko演示的所有可能值,否则无法将结果透视到列标题中,但您可以使用sql将结果透视到可以使用显示工具(例如BI切片工具)透视的表单中


嗯,除非您知道slaasko演示的所有可能值,否则无法将结果透视到列标题中,但您可以使用sql将结果透视到可以使用显示工具(例如BI切片工具)透视的表单中


搜索mysql条件聚合和/或mysql数据透视搜索mysql条件聚合和/或mysql数据透视这里的查询似乎比严格必要的多。这里的查询似乎比严格必要的多。这只是稍微复杂一点,你可以。只是有点复杂
SELECT SUM(amount), activity, date FROM table GROUP BY date, activity;