题解 | #返回产品名称和每一项产品的总订单数#

返回产品名称和每一项产品的总订单数

https://www.nowcoder.com/practice/1c64fd9048364a58a8ffa541720359a4

两种方法,方法一用sum,但是要注意要用到cast转换函数,不可以用round,不过目前不清楚为什么不支持使用round

SELECT    
    Products.prod_name,    
    Cast(SUM(    
        CASE    
            WHEN OrderItems.order_num IS NOT NULL THEN 1    
            ELSE 0    
        END    
    ) as unsigned ) AS orders    
FROM    
    Products    
LEFT JOIN OrderItems ON Products.prod_id = OrderItems.prod_id    
GROUP BY    
    Products.prod_name    
ORDER BY    
    Products.prod_name

方法二,使用count聚合函数,因为如果值为NULL count函数默认为0,且count聚合函数不能选择count(*)因为有部分值为NULL

应该选择count(order_num)

SELECT
    Products.prod_name,
    count(OrderItems.order_num) AS orders
FROM
    Products
    LEFT JOIN OrderItems ON Products.prod_id = OrderItems.prod_id
GROUP BY
    Products.prod_name
ORDER BY
    Products.prod_name

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务