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;

 

posted @ 2022-08-10 16:12  balabalahhh  阅读(36)  评论(0)    收藏  举报