遇到一个 mysql 问题,如果解决问题红包 50 元。

2020-06-06 18:13:58 +08:00
 xiaowenxi

有一张表

id  good_id  good_value create_time
1    101      5          2020-06-06 00:38
2    101      10         2020-06-06 00:38
3    102      8      	2020-06-05 01:01
4    102      10         2020-06-06 00:38

现在要求如果 create_time 相同的情况下,并且 good_id 相同的情况下就将 good_value 相加在一起.

最终查询的 结果应该是:

id  good_id  good_value create_time
1    101      15          2020-06-06 00:38
3    102      8      	2020-06-05 01:01
4    102      10         2020-06-06 00:38

可以用 sql 查询出来吗?我在网上找了一圈都没找出解决方案来,如果有同好门给出查询语句,直接支付宝 发 50 元红包。

2458 次点击
所在节点    问与答
18 条回复
ez4hc
2020-06-06 18:23:54 +08:00
SELECT id,good_id,sum(good_value),create_time FROM good_6_6 GROUP BY good_id,create_time;
xuuuu
2020-06-06 18:28:59 +08:00
sum(good_value) groupby create_time,good_id
zhaohy
2020-06-06 18:47:21 +08:00
来晚了,哈哈
lxk11153
2020-06-06 18:50:55 +08:00
粗活我来,我拿手滴,以后请直接 call cXEvd3g6IDQ0Mzk3NDE1OQ== (b​a​s​e​6​4)
xiaowenxi
2020-06-06 19:06:49 +08:00
@ez4hc 稍等,因为我是由其他项目, 项目实际,数据大约有 4 万多条和 7 万多条,等我联查下,看下问题出哪了?可以给我个微信吗?我感觉查出来的数据还是不对,也可能是我描述问题有错误
noahsophie
2020-06-06 19:09:23 +08:00
微信:bm9haF9zb3BoaWU= 免费
miaeLKK
2020-06-06 19:37:09 +08:00
我怀疑你是来做慈善的,哈哈
ez4hc
2020-06-06 20:13:56 +08:00
@xiaowenxi QW55V2F5XyUyMGhjJTBB
qiayue
2020-06-06 21:04:08 +08:00
group by 可解决,如果数据不对,你先建一张小表测试下
lotosbin
2020-06-06 21:08:33 +08:00
SELECT min(id),good_id,sum(good_value),create_time FROM good_6_6 GROUP BY good_id,create_time;
Xusually
2020-06-06 21:13:47 +08:00
其实先不说 sql 的事儿,楼主找了这么长时间,其实完全可以程序遍历一遍这个表,跑一遍对比汇总另存一张表就结束了

结果表还可以用来和单条 sql 对照,不是美滋滋
fareware
2020-06-06 22:17:17 +08:00
这种难度的话...,我愿意做长期 SQL 外包
DelayNoMay
2020-06-06 23:28:14 +08:00
这种难度也太难了吧
DelayNoMay
2020-06-06 23:30:24 +08:00
@ez4hc 你这条 sql 运行会报错的,多查了一个 id 的字段
dallaslu
2020-06-06 23:46:06 +08:00
啊痛失 50 元
xiaowenxi
2020-06-07 00:56:12 +08:00
我搞了一天了,还没有弄出来,我还是把原想法说出来把。
现在有 2 张表,一张是 invoice 表,一张是 charge 表,多对多的关系,我现在需要导出大约 4.5w 条数据,
我需要获取的数据是:invoice_number/ ctime/account_id/amount/ 这 4 个数据就可以了,总共大约 4.5w 个 invoice_number
最难的部分 是价格是动态生成的,有其他几个表相加得到的。
第一张表:
```
id invoice_number date type from_date to_date ctime account_id
75560 101560 2020-06-01 1 2020-06-01 2020-06-01 2020-06-01 09:59:46 2162
75686 101686 2020-06-02 1 2020-06-02 2020-06-02 2020-06-02 13:06:02 2162

```


```
id shipment_id account_id amount describe ctime type val_type value status
1350092 69149374 2162 307.03 base rate 2020-06-01 09:59:45 1 2 307.03 0
1350093 69149374 2162 46.05 markup rate 2020-06-01 09:59:45 1 1 15.00 0
1350094 69149374 2162 353.08 base and markup rate 2020-06-01 09:59:46 1 2 353.08 1
1350095 69149374 2162 24.72 Fuel Surcharge 2020-06-01 09:59:46 2 1 7.00 1
1350096 69149374 2162 5.00 FTZ 2020-06-01 09:59:46 2 2 5.00 1
1350097 69149374 2162 66.65 Emergency Surcharge 2020-06-01 09:59:46 2 3 4.30 1
1350098 86932456 2162 45.92 base rate 2020-06-01 09:59:47 1 2 45.92 0
1350099 86932456 2162 4.59 markup rate 2020-06-01 09:59:47 1 1 10.00 0
1350100 86932456 2162 50.51 base and markup rate 2020-06-01 09:59:47 1 2 50.51 1
1351155 35763591 2162 86.00 Other(Out of delivery surcharge) 2020-06-02 13:06:02 3 2 86.00 0 1

```

得到的最终的数据是
```
invoice_number ctime amount
101560 2020-06-01 09:59:46 2162 499.96 这个 499 的价格是 几单不同 shipment 单 id 下 status 为 1 同一账户 id 2162 ,时间是一定小范围 小于 1 小时 的价格相加得到的 = 353.08 +24.72+5.00+66.65+50.51 =499.96

101686 2020-06-02 13:06:02 2162 86.00 这个单得到的少。

```

希望我已经描绘清楚了。 因为今天晚上我必须要搞定。
xiaowenxi
2020-06-07 08:36:30 +08:00
我擦,我肝了一晚上,我肝出来了,由于查询的时间问题,只能半年半年的查,然后导出到 csv,在这贴下代码

select a.account_id,a.shipment_id,a.value,b.invoice_number,a.registerTime from(select account_id,shipment_id,sum(account_amount) as value, DATE_FORMAT(ctime,'%Y-%m-%d') as registerTime from w2s_charge_datail where `status` = 1 and ctime BETWEEN '2017-1-1 00:00:00' and '2017-6-1 00:00:00' GROUP BY account_id,registerTime) a LEFT JOIN (select invoice_number,account_id,DATE_FORMAT(ctime,'%Y-%m-%d') as cTime from w2s_invoice where type = '1' and ctime BETWEEN '2017-1-1 00:00:00' and '2017-6-1 00:00:00') b on a.registerTime = b.cTime and a.account_id = b.account_id GROUP BY invoice_number DESC;
xiaowenxi
2020-06-07 08:37:05 +08:00
@miaeLKK 应该不简单把。我把最新的情况给弄出来了。

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

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

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

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

© 2021 V2EX