【发布时间】:2014-08-05 10:51:28
【问题描述】:
我有两个带有timestamp 列的表。
我想按天对结果进行分组。例如:从2014/06/10 到2014/06/13。这些日期之间是否有记录无关紧要,我希望它按天分组。
我的桌子:
profits:
profits_referrals:
我想要的结果:
╔═════════════╦══════════════╦══════╗
║ date ║ ......... ║ .. ║
╠═════════════╬══════════════╬══════╣
║ 2014/06/10 ║ ......... ║ .. ║
║ 2014/06/11 ║ ......... ║ .. ║
║ 2014/06/12 ║ ......... ║ .. ║
║ 2014/06/13 ║ ......... ║ .. ║
╚═════════════╩══════════════╩══════╝
注意:如果某个日期没有记录,我仍然希望它显示该日期,amount 将是0。
到目前为止我做了什么:
SELECT SUM(`profits`.`amount`) AS `profAmount`,
COUNT(`profits`.`amount`) AS `profCount`,
SUM(`profits_referrals`.`amount`) AS `refAmount`,
COUNT(`profits_referrals`.`amount`) AS `refCount`,
DATE(FROM_UNIXTIME(`profits`.`date`)) AS `profDate`,
DATE(FROM_UNIXTIME(`profits_referrals`.`date`)) AS `refDate`
FROM `profits`
JOIN `profits_referrals`
ON `profits`.`userid` = `profits_referrals`.`referral`
WHERE `profits`.`userid` = " . (int)$user->id . "
GROUP BY DATE(FROM_UNIXTIME(`profits`.`date`)), DATE(FROM_UNIXTIME(`profits_referrals`.`date`))
ORDER BY `profDate`
DESC
结果:(我做了一些 PHP 代码来显示它)
Date Sales Referrals Total
2014-04-28 2 / $7.35 USD 2 / $1.4 USD $8.75 USD
2014-04-28 2 / $7.35 USD 2 / $1.4 USD $8.75 USD
2014-03-27 1 / $2.10 USD 1 / $0.7 USD $2.80 USD
2014-03-27 1 / $2.10 USD 1 / $0.7 USD $2.80 USD
2014-03-25 3 / $6.30 USD 3 / $2.0 USD $8.40 USD
2014-03-25 3 / $6.30 USD 3 / $2.0 USD $8.40 USD
【问题讨论】:
-
到目前为止你得到了什么?请注意,如果您有一个预先生成的日历表(这是最有用的“维度”/分析实用程序表之一),您将度过最轻松的时光。
-
@Clockwork-Muse 我不太明白你的解决方案,你能解释一下吗?
-
无论我如何看待解决方案,您已经尝试过什么?特别是,您要在行上运行哪些计算?为什么需要两张表?
-
@Clockwork-Muse 我想显示每天的报告:用户赚了多少钱(来自
profits,来自profits_referrals和总计)。我更新了我的问题,请看代码。 -
啊,现在我们可以看看你的问题是什么......给我一分钟。