› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
solaro
V2EX  ›  MySQL

MYSQL 怎么在 sum 某个字段时判断如果另一个字段为空时,该行则不 sum 进去

  •  
  •   solaro · Jul 27, 2017 · 6241 views
    This topic created in 3348 days ago, the information mentioned may be changed or developed.

    目前业务情况是这样的: 商品 XXX 有 进货价 A、售价 B、实际售价 C (扣去优惠实际付费金额) 现在要统计所有收银单里的商品 XXX 的利润

    要求:

    if (A == 0) { // 没有设置进货价的,则当它利润是 0,不统计 // 不加入统计 } else { profit = ( 实际售价 C - 进货价 A ) * 数量; sum(profit) // mysql 里的 sum profit_rate = sum(profit) / sum(进货价 A * 数量); //利润率 }

    mysql 咋写啊 。。。我日

    得在 mysql 里用 IF 吗?写不来

    12 replies  •  2017-07-27 20:32:06 +08:00
    gaolycn
        2
    gaolycn  
       Jul 27, 2017 via Android
    问的莫名其妙,select sum(C-A) from xxx where A!=0;
    我仔细看了问题一遍又一遍,确定楼主就是这个意思啊,难道我理解错了??
    nullen
        3
    nullen  
       Jul 27, 2017
    假设:a 字段是计数字段,b 是可能为空的字段

    SELECT SUM(IF(b!='',a,0)) FROM table
    ideascf
        4
    ideascf  
       Jul 27, 2017
    3 楼正解
    reus
        5
    reus  
       Jul 27, 2017
    这都不会,也敢让你写?
    where 没用过?
    demoplayer88
        6
    demoplayer88  
       Jul 27, 2017 via iPhone
    就是判断为 0 不统计的意思嘛? if 直接写就行了啊…
    sunsh217
        7
    sunsh217  
       Jul 27, 2017
    5 楼说的对,用 where 过滤掉,不过这水准,问题很大啊。
    xfspace
        8
    xfspace  
       Jul 27, 2017 via Android
    我日,这都能有工作
    freestyleyooo
        9
    freestyleyooo  
       Jul 27, 2017
    我日 很接地气啊
    aksoft
        10
    aksoft  
       Jul 27, 2017
    工作和能力并不是直接的,人都有学习的阶段行不?潜力股
    zeraba
        11
    zeraba  
       Jul 27, 2017 via Android
    楼主 想一下 一共 4 个字段 进货价 售价 实际售价 数量
    假设字段值都正常 (实际售价 - 进货价)/进货价就是你们运营所谓的利润率 数量分子分母都有 抵消了
    现在存在进货价没有或者为 0 的情况 直接将这部分设置为和实际售价一样 结果就是利润率为 0 这部分也是运营需要看的 而不是直接 where 筛选
    so
    select 商品 id,case when A = 0 then A = C else A end A,C
    from 表名
    就是你需要统计的清单 再做个查询算下利润率就行
    当然你也可以直接在 case when 中算好
    kran
        12
    kran  
       Jul 27, 2017 via iPhone
    where 并不怎么靠谱,想一下,需要 count 怎么办? 3 楼靠谱
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1246 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 17:16 · PVG 01:16 · LAX 10:16 · JFK 13:16
    ♥ Do have faith in what you're doing.