9.控制流
1.1393.股票的资本损益
i.
1 # Write your MySQL query statement below 2 SELECT 3 stock_name,SUM(CASE WHEN operation = 'Buy' THEN -price ELSE price END) capital_gain_loss 4 FROM 5 Stocks 6 GROUP BY stock_name;
ii.
1 # Write your MySQL query statement below 2 SELECT 3 stock_name,SUM(IF(operation = 'Buy',-price,price)) capital_gain_loss 4 FROM 5 Stocks 6 GROUP BY stock_name;
2.1407.排名靠前的旅行者
i.
1 # Write your MySQL query statement below 2 SELECT 3 Users.name,IFNULL(SUM(Rides.distance),0) travelled_distance 4 FROM 5 Users LEFT JOIN Rides ON Users.id = Rides.user_id 6 GROUP BY Users.id 7 ORDER BY travelled_distance DESC,name
ii.
1 # Write your MySQL query statement below 2 SELECT 3 Users.name,IF(Rides.distance,SUM(Rides.distance),0) travelled_distance 4 FROM 5 Users LEFT JOIN Rides ON Users.id = Rides.user_id 6 GROUP BY Users.id 7 ORDER BY travelled_distance DESC,name
iii.
coalesce函数
coalesce(表达式1,表达式2,....)
按照顺序先执行表达式1,如果不为null则返回表达式1的结果,如果为null,则往下执行表达式2,依此类推
可以用于当返回值为null时的默认返回
1 # Write your MySQL query statement below 2 SELECT 3 Users.name,COALESCE(SUM(Rides.distance),0) travelled_distance 4 FROM 5 Users LEFT JOIN Rides ON Users.id = Rides.user_id 6 GROUP BY Users.id 7 ORDER BY travelled_distance DESC,name
3.1158.市场分析I
i.
1 # Write your MySQL query statement below 2 SELECT 3 Users.user_id buyer_id,Users.join_date,IFNULL(UserBuy.cnt,0) orders_in_2019 4 FROM 5 Users LEFT JOIN (SELECT buyer_id,COUNT(buyer_id) cnt 6 FROM Orders 7 WHERE year(order_date) = 2019 8 GROUP BY buyer_id) UserBuy 9 ON Users.user_id = UserBuy.buyer_id
ii.
1 # Write your MySQL query statement below 2 SELECT 3 u.user_id buyer_id,u.join_date,COUNT(o.buyer_id) orders_in_2019 4 FROM 5 Users u LEFT JOIN Orders o ON u.user_id = o.buyer_id AND year(o.order_date) = 2019 6 GROUP BY u.user_id;

浙公网安备 33010602011771号