一条 SQL 可以完成这个报表?

2018-01-17 12:19:41 +08:00
 xoxo419

a b c d 共四表

  1. a.id a.title
  2. b.uid b.aid
  3. c.oid, c.uid, c.create_time
  4. d.id d.oid d.goods_name d.num d.price

需求-统计分析

条件 用户类型 下单时间

报表格式

小米 3 小米 6 苹果 4 苹果 6 苹果 X 金额

用户类型 1 数量 数量 合计

用户类型 2

用户类型 3

合计 合计 合计 总计

2506 次点击
所在节点    程序员
8 条回复
daydaydayup
2018-01-17 12:29:08 +08:00
这个得看关联项了.有关联,100 张表都可以用一条 sql 做完
rensuperk
2018-01-17 12:46:43 +08:00
当然可以!难道你要我们免费帮你写 sql 吗,写这么详细?
morefreeze
2018-01-17 12:50:17 +08:00
你要问最后合计怎么出来的话 `WITH ROLLUP`
这就是联表联成一条数据像这样
a.id, b.uid, d.id, count(1), sum(d.price)
然后再按 df.pivot(d.id) 转成矩阵形式吧。

如果只能写 sql 的话 你需要知道所有商品类型 然后用 count(if(d.goods_name='小米 3', 1, null)) 这种类似的
hugee
2018-01-17 13:01:00 +08:00
可以
runntuu
2018-01-17 13:01:56 +08:00
@hugee 一种就不上你当的即视感:-P
chinvo
2018-01-17 13:03:19 +08:00
曾经写过三页 A4 长度的 SQL

发现效率并不咋样

然后果断老老实实 ORM + 业务逻辑 + 缓存 了
chinvo
2018-01-17 13:04:27 +08:00
当然四个表做关联并不困难,@morefreeze #3 也给了解决思路
c6h6benzene
2018-01-17 18:28:30 +08:00
你是要 SQL Statement 直接出查询结果当报表,还是有其他的报表工具?

不过看起来都是「一条」 SQL 能解决的,再不济可以 CTE 嘛。

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

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

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

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

© 2021 V2EX