在 Hive 中,可以使用 CASE WHEN 语句来根据生日计算星座。以下是示例代码:

SELECT
  CASE 
    WHEN ((MONTH(birthday) = 3) AND (DAY(birthday) >= 21)) OR ((MONTH(birthday) = 4) AND (DAY(birthday) <= 19)) THEN 'Aries'
    WHEN ((MONTH(birthday) = 4) AND (DAY(birthday) >= 20)) OR ((MONTH(birthday) = 5) AND (DAY(birthday) <= 20)) THEN 'Taurus'
    WHEN ((MONTH(birthday) = 5) AND (DAY(birthday) >= 21)) OR ((MONTH(birthday) = 6) AND (DAY(birthday) <= 20)) THEN 'Gemini'
    WHEN ((MONTH(birthday) = 6) AND (DAY(birthday) >= 21)) OR ((MONTH(birthday) = 7) AND (DAY(birthday) <= 22)) THEN 'Cancer'
    WHEN ((MONTH(birthday) = 7) AND (DAY(birthday) >= 23)) OR ((MONTH(birthday) = 8) AND (DAY(birthday) <= 22)) THEN 'Leo'
    WHEN ((MONTH(birthday) = 8) AND (DAY(birthday) >= 23)) OR ((MONTH(birthday) = 9) AND (DAY(birthday) <= 22)) THEN 'Virgo'
    WHEN ((MONTH(birthday) = 9) AND (DAY(birthday) >= 23)) OR ((MONTH(birthday) = 10) AND (DAY(birthday) <= 22)) THEN 'Libra'
    WHEN ((MONTH(birthday) = 10) AND (DAY(birthday) >= 23)) OR ((MONTH(birthday) = 11) AND (DAY(birthday) <= 21)) THEN 'Scorpio'
    WHEN ((MONTH(birthday) = 11) AND (DAY(birthday) >= 22)) OR ((MONTH(birthday) = 12) AND (DAY(birthday) <= 21)) THEN 'Sagittarius'
    WHEN ((MONTH(birthday) = 12) AND (DAY(birthday) >= 22)) OR ((MONTH(birthday) = 1) AND (DAY(birthday) <= 19)) THEN 'Capricorn'
    WHEN ((MONTH(birthday) = 1) AND (DAY(birthday) >= 20)) OR ((MONTH(birthday) = 2) AND (DAY(birthday) <= 18)) THEN 'Aquarius'
    ELSE 'Pisces'
  END AS zodiac
FROM your_table;

以上代码会在查询结果中添加一列名为 zodiac 的列,其中包含每个人的星座。请将 your_table 替换为您实际的表名

hive 不适用udf函数 根据生日算星座

原文地址: https://www.cveoy.top/t/topic/g6eZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录