V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
xiaowenxi
V2EX  ›  问与答

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

  •  
  •   xiaowenxi · Jun 6, 2020 · 3340 views
    This topic created in 2150 days ago, the information mentioned may be changed or developed.

    有一张表

    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 元红包。

    18 replies    2020-06-07 08:37:05 +08:00
    ez4hc
        1
    ez4hc  
       Jun 6, 2020
    SELECT id,good_id,sum(good_value),create_time FROM good_6_6 GROUP BY good_id,create_time;
    xuuuu
        2
    xuuuu  
       Jun 6, 2020
    sum(good_value) groupby create_time,good_id
    zhaohy
        3
    zhaohy  
       Jun 6, 2020 via iPhone
    来晚了,哈哈
    lxk11153
        4
    lxk11153  
       Jun 6, 2020
    粗活我来,我拿手滴,以后请直接 call cXEvd3g6IDQ0Mzk3NDE1OQ== (b​a​s​e​6​4)
    xiaowenxi
        5
    xiaowenxi  
    OP
       Jun 6, 2020
    @ez4hc 稍等,因为我是由其他项目, 项目实际,数据大约有 4 万多条和 7 万多条,等我联查下,看下问题出哪了?可以给我个微信吗?我感觉查出来的数据还是不对,也可能是我描述问题有错误
    noahsophie
        6
    noahsophie  
       Jun 6, 2020
    微信:bm9haF9zb3BoaWU= 免费
    miaeLKK
        7
    miaeLKK  
       Jun 6, 2020 via Android   ❤️ 1
    我怀疑你是来做慈善的,哈哈
    ez4hc
        8
    ez4hc  
       Jun 6, 2020
    @xiaowenxi QW55V2F5XyUyMGhjJTBB
    qiayue
        9
    qiayue  
    PRO
       Jun 6, 2020
    group by 可解决,如果数据不对,你先建一张小表测试下
    lotosbin
        10
    lotosbin  
       Jun 6, 2020
    SELECT min(id),good_id,sum(good_value),create_time FROM good_6_6 GROUP BY good_id,create_time;
    Xusually
        11
    Xusually  
       Jun 6, 2020
    其实先不说 sql 的事儿,楼主找了这么长时间,其实完全可以程序遍历一遍这个表,跑一遍对比汇总另存一张表就结束了

    结果表还可以用来和单条 sql 对照,不是美滋滋
    fareware
        12
    fareware  
       Jun 6, 2020
    这种难度的话...,我愿意做长期 SQL 外包
    DelayNoMay
        13
    DelayNoMay  
       Jun 6, 2020
    这种难度也太难了吧
    DelayNoMay
        14
    DelayNoMay  
       Jun 6, 2020   ❤️ 1
    @ez4hc 你这条 sql 运行会报错的,多查了一个 id 的字段
    dallaslu
        15
    dallaslu  
       Jun 6, 2020
    啊痛失 50 元
    xiaowenxi
        16
    xiaowenxi  
    OP
       Jun 7, 2020
    我搞了一天了,还没有弄出来,我还是把原想法说出来把。
    现在有 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
        17
    xiaowenxi  
    OP
       Jun 7, 2020
    我擦,我肝了一晚上,我肝出来了,由于查询的时间问题,只能半年半年的查,然后导出到 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
        18
    xiaowenxi  
    OP
       Jun 7, 2020
    @miaeLKK 应该不简单把。我把最新的情况给弄出来了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5946 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 99ms · UTC 03:17 · PVG 11:17 · LAX 20:17 · JFK 23:17
    ♥ Do have faith in what you're doing.