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;