【问题标题】:How to use Conditional WHERE Clause in MySql under this kind of circumstance?在这种情况下如何在 MySql 中使用条件 WHERE 子句?
【发布时间】:2022-01-22 17:30:47
【问题描述】:

我是数据分析的新手,刚刚在练习时遇到了一个问题,我的练习数据很糟糕:practice_movie_data

因此,实践需要通过Release Data 对数据进行排序,同时将Genre 设置为喜剧Revenue 大于3 亿美元。 本教程显示 Bigquery 上的案例将成功运行,如下所示:

SELECT
    * 
FROM
    movie_data
WHERE
    Genre = 'Comedy'
    AND Revenue > 300000000
ORDER BY 
    `Release Date`
    DESC

但是当我在Mysql上尝试时,没有显示结果,因为我可以告诉Revenue列的数据类型是Varchar(255),所以我尝试了这个:

SELECT
    * 
FROM
    movie_data
WHERE
    Genre = 'Comedy'
    AND CAST(Revenue AS FLOAT) AND Revenue > 300000000)
ORDER BY 
    `Release Date`
    DESC

很遗憾,我遇到了错误,请帮我解决这个问题! 感谢所有有用的答案。

【问题讨论】:

  • 发布日期列是否命名为 Release Date,因为这不应该是这种情况,可能是 release_date 我假设
  • 在包含多余字符 ($) 之前,直接进行 Revenue 转换是没有意义的 - CAST 将产生零。删除这个多余的字符,然后使用该值(在这种情况下不需要 CAST)。
  • 如果您可以在问题中包含表格结构,这也很有帮助。
  • 您的数据是否真的包含$ 符号?
  • 计数()。同一个号码?

标签: mysql sql


【解决方案1】:

尝试删除不需要的字符,然后转换/转换它:

SELECT
    * 
FROM
    movie_data
WHERE
    Genre = 'Comedy'
    AND CONVERT(REPLACE(REPLACE(Revenue,'$',''),',',''),DECIMAL(12,2)) > 300000000
ORDER BY 
    `Release Date`
    DESC

【讨论】:

  • 谢谢!现在可以了!你能否解释一下为什么REPLACE 被使用了两次?对于这种情况,我可以使用CAST 代替CONVERT 吗?
  • 您可以使用 cast 代替,replace 使用了两次,因为它首先删除了美元符号,然后从数字中删除了,(因为 MySQL 不理解这种格式的数字),所以基本上来自例如$1,000,000.15 你得到1000000.15
  • 哦,我终于明白了!我刚刚尝试了 CAST,它奏效了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2011-03-23
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多