问题场景
用SQL统计每个客户的出库单和入库单数量,并按总量进行排序。当客户无订单时,数量为0。
问题
直接使用count函数时,由于多表关联导致结果出现笛卡尔积,查询出的数量为出库单数量*入库单数量。
解决
在COUNT函数中使用唯一键,并用DISTINCT进行去重。
问题解决。
延伸
若订单表中存在货物重量,要统计每个客户的出库重量和入库重量,该怎么查。此时distinct明显不适用于此场景,需使用子查询的方式实现:
但这种场景只存在两种订单,若有十种订单的时候,需要层层包裹。导致SQL读写起来不够方便。用UNION的方式也可以实现。
如果有更好的实现方式,请留言指点。