php - 从 MYSQL 中分解和分组数据
问题描述
我不是最好的 MYSQL 查询,但是这个让我很难做到这一点,我的基本示例 MYSQL 数据是:
INSERT INTO `spending` (`spend_id`, `spend_user_id`, `spend_sender_id`, `spend_offer_id`, `spend_amount`, `spend_click`, `spend_date`) VALUES
(2, 190, 190, 34591, '0.15', 1, '2018-05-14 22:39:47'),
(3, 190, 190, 34591, '0.15', 1, '2018-05-14 22:39:52'),
(4, 190, 7, 34591, '0.15', 1, '2018-05-14 22:40:07'),
(5, 190, 10, 34591, '0.15', 1, '2018-05-14 22:42:15'),
(6, 190, 7, 34591, '0.15', 1, '2018-05-15 06:55:56'),
(7, 190, 7, 34591, '0.15', 1, '2018-05-16 17:05:29'),
(8, 190, 7, 34591, '0.15', 1, '2018-05-16 17:05:32');
我的目标是将数据分解为 2 个主要部分Clicks和Cost基本上每个条目都被视为 1 click,html 仪表板就像:
然后是 4 个子部分。
4 个子部分是今天、昨天、上周、上个月的点击次数和费用,因为spend_user_id
我不知道最好的方法,任何指导将不胜感激!
解决方案
对于显示的每一列(今天、昨天、周、月),您需要单独的子查询。
例如,要获取本月至今的结果,请使用此子查询。
SELECT COUNT(*) clicks, SUM(spend_amount) spend_amount
FROM spending
WHERE spend_date >= LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
拥有所有这些子查询后,您可以将它们连接在一起以获得结果。(注意:每个子查询只产生一行,因此无条件加入它们
ON
也会产生一行。)
像这样的东西。(http://sqlfiddle.com/#!9/f8e090/7/0)
SELECT today.clicks, today.spend_amount,
yesterday.clicks, yesterday.spend_amount,
week.clicks, week.spend_amount,
month.clicks, month.spend_amount
FROM
(SELECT COUNT(*) clicks, SUM(spend_amount) spend_amount
FROM spending
WHERE spend_date >= CURDATE()) today
JOIN
(SELECT COUNT(*) clicks, SUM(spend_amount) spend_amount
FROM spending
WHERE spend_date >= CURDATE() - INTERVAL 1 DAY
AND spend_date < CURDATE()) yesterday
JOIN
(SELECT COUNT(*) clicks, SUM(spend_amount) spend_amount
FROM spending
WHERE spend_date >= CURDATE() - INTERVAL 7 DAY
AND spend_date < CURDATE()) week
JOIN
(SELECT COUNT(*) clicks, SUM(spend_amount) spend_amount
FROM spending
WHERE spend_date >= LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH) month
我猜你的意思,确切地说,到今天、昨天、一周和一个月。在您的报告具有商业意义之前,您需要弄清楚这一点。
推荐阅读
- react-native - 后退按钮更改我的自定义标题在 React Navigation 中的位置
- r - R:水平条形图(简单甘特图)
- go - 在测试二进制文件中禁用竞争检测
- python - 提高语音识别,python
- flutter - 如何知道应用程序何时在 Flutter 中加载?
- java - Apache Beam - 重复数据删除功能的限制是什么
- c# - 除了声明变量之外,无法在线为变量赋值
- powershell - 为什么“调用命令”没有采取任何措施? - 电源外壳
- apache-kafka - Kafka Transaction 以防多线程
- c# - CsvHelper 的 Filestream 和 datagridview 内存问题