统计某个用户的每日订单总额

2017-09-20 14:26:45 +08:00
 treedon
材料:user 表 and order 表(order 表有下单日期,订单金额)
需求 : 统计某用户 指定的日期范围内 [每日] 订单总额

其实功能已经实现,用循环写出来了. 但是用循环去泡 sql 是很低端的做法

故到这里寻求更好的思路。
7034 次点击
所在节点    MySQL
32 条回复
treedon
2017-09-20 14:32:01 +08:00
有 8 个人查看了,都没回复
是我的问题太 low 了嘛?
sonyxperia
2017-09-20 14:34:42 +08:00
需要用到两张表关联查询吗?
mxm145
2017-09-20 14:37:51 +08:00
如果是每天都需要的数据,是不是应该专门建表存储,每次订单完成去更新一次
huijiewei
2017-09-20 14:39:32 +08:00
SELECT SUM(amount) FROM order GROUP BY userId

用 GROUP BY
liprais
2017-09-20 14:39:37 +08:00
lwldcr
2017-09-20 14:39:43 +08:00
join 吧
treedon
2017-09-20 14:39:54 +08:00
@mxm145 我也想这么干,但是别人不愿意。只好我来统计了
treedon
2017-09-20 14:40:38 +08:00
@sonyxperia 不用关联的 order 表有 user_id 有下单时间 有订单价格
treedon
2017-09-20 14:41:06 +08:00
@liprais 非常感谢,我去看看
treedon
2017-09-20 14:41:38 +08:00
@huijiewei 我在看 5 楼 提供的文章也是用 group by
b821025551b
2017-09-20 14:42:02 +08:00
你没有指出的关键点是,user 表和 order 表是如何进行关联的。
treedon
2017-09-20 14:44:01 +08:00
@b821025551b 因为不是特别重点吧
torbrowserbridge
2017-09-20 14:44:14 +08:00
数据量小直接 sql 查询,数据量大可以离线统计,甚至上流式数据处理
treedon
2017-09-20 14:44:28 +08:00
@b821025551b user 表的 id 关联 order 表的 user_id
b821025551b
2017-09-20 14:50:53 +08:00
@treedon #14 那不就是 4 楼的 group by user_id 么
treedon
2017-09-20 15:05:17 +08:00
@liprais SELECT
FROM_UNIXTIME('create_time')AS day_day,
sum(total_price) AS day_sum
FROM
order
WHERE
user_id = 100
GROUP BY
FROM_UNIXTIME('create_time'); 我的 create_time 存的是时间戳 但是输出是 1970
liprais
2017-09-20 15:06:30 +08:00
@treedon 贴数据
treedon
2017-09-20 15:09:11 +08:00
@liprais 这里不能截图 好憋屈
order 表的数据是
user_id create_time total_price
100 1505871005(2017-09-20) 10
100 1505810684(19) 20
100 1505724284(18) 30

输出的就是 day_day day_sum
1970-01-01 08:00:00.000000 51.30
b821025551b
2017-09-20 15:15:52 +08:00
使用 FROM_UNIXTIME 这个函数前先查查是怎么用的好伐,这里你可以用 DATE_FORMAT(create_time,'%y%m%d')
liprais
2017-09-20 15:16:19 +08:00
@treedon

我这里是没问题的
mysql> select from_unixtime(1505871005);
+---------------------------+
| from_unixtime(1505871005) |
+---------------------------+
| 2017-09-20 09:30:05 |
+---------------------------+
1 row in set (0.00 sec)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX