MySQL笔记11

介绍MYSQL中的逻辑表达式。

1.IF表达式

'''
IF([your conditions],[value outputted if conditions are met],[value outputted if conditions are NOT met])
'''
SELECT created_at, IF(created_at<'2014-06-01','early_user','late_user') AS user_type
FROM users

嵌入IF(nested IF ):

'''
 We could use a nested query to say whenever "country" does not equal "US", use the results of a second IF expression to determine whether the outputed value should be "Not Applicable" or "Outside US."
The IF expression would look like this
''' IF(cleaned_users.country='US','In US', IF(cleaned_users.country='N/A','Not Applicable','Outside US'))

 

%%sql
SELECT IF(cleaned_users.country='US', 'In US',
         IF(cleaned_users.country='N/A','Not Applicable', 'Outside US')) AS US_user,
        COUNT(cleaned_users.user_guid)
FROM (SELECT DISTINCT user_guid, country
     FROM users
     WHERE country IS NOT NULL) AS cleaned_users
GROUP BY US_user

2.CASE 语句

%%sql
SELECT CASE WHEN cleaned_users.country="US" THEN "In US"
            WHEN cleaned_users.country="N/A" THEN "Not Applicable"
            ELSE "Outside US"
            END AS US_user, 
            COUNT(cleaned_users.user_guid)
FROM (SELECT DISTINCT user_guid, country            
    FROM users
    WHERE country IS NOT NULL) AS cleaned_users
GROUP BY US_user

或者可以写成如下形式:

'''
CASE_Value
'''
%%sql
SELECT CASE cleaned_users.country
            WHEN "US" THEN "In US"
            WHEN "N/A" THEN "Not Applicable"
            ELSE "Outside US"
            END AS US_user, COUNT(cleaned_users.user_guid)
FROM (SELECT DISTINCT user_guid, country   
    FROM users
    WHERE country IS NOT NULL) AS cleaned_users
GROUP BY US_user
%%sql 
SELECT d.dog_guid, d.weight, CASE 
        WHEN d.weight>0 AND d.weight <= 10 THEN "very small"
        WHEN d.weight>10 AND d.weight <= 30 THEN "small"
        WHEN d.weight>30 AND d.weight <= 50 THEN "medium"
        WHEN d.weight>50 AND d.weight <= 85 THEN "large"
        WHEN  d.weight>85 THEN "very large"
        END AS Dog_size
FROM  dogs d
LIMIT 200;

3. 逻辑表达式

NOT, AND, OR

'''
CASE WHEN "condition 1" OR "condition 2" AND "condition 3"
CASE WHEN "condition 3" AND "condition 1" OR "condition 2"
CASE WHEN ("condition 1" OR "condition 2") AND "condition 3"
'''

SELECT COUNT(DISTINCT dog_guid),
        CASE WHEN breed_group='Sporting' OR breed_group='Herding' AND exclude!='1' THEN "group 1"
        ELSE "everything else"
        END AS groups
FROM dogs         
GROUP BY groups

 

转载于:https://www.cnblogs.com/Shinered/p/9686884.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值