【问题标题】:How to filter integer with specific numbers in sql如何在sql中过滤具有特定数字的整数
【发布时间】:2020-03-20 10:01:21
【问题描述】:

因此,在我的一项任务中,他们希望我为查询整理出以“00”结尾的数字。这意味着中间没有“00”,只是在末尾。

例如:100、200、300等。这就是我想要的结果。

问题是,我不知道该怎么做。我尝试使用 CASE 和 CONVERT 将其转换为字符串,但它却给了我错误。我是先在 Select 上转换它,然后再对其进行排序,还是应该同时发生?

或者你有什么更好的建议?

这是我的一些尝试。

SELECT name, SUM(count) AS freq
FROM [baby.baby_names]
WHERE gender = 'M' AND year < 2010 AND freq like '%[00]'
GROUP BY name
ORDER BY freq DESC;

感谢您的宝贵时间。

【问题讨论】:

标签: sql case


【解决方案1】:

freq 是在聚合查询中计算出来的,所以你需要having。它是一个数字,所以使用算术而不是字符串操作——合适的是模运算符,通常使用%

SELECT name, SUM(count) AS freq
FROM [baby.baby_names]
WHERE gender = 'M' AND year < 2010
GROUP BY name
HAVING freq % 100 = 0
ORDER BY freq DESC;

一些数据库使用mod() 函数代替:mod(freq, 100) = 0

【讨论】:

  • 谢谢!这个绝对有效!在此之后,我需要阅读更多关于聚合查询的信息,这样我才能知道何时使用 HAVING。非常感谢。
【解决方案2】:

检查一个数字是否以两个零结尾相当于检查它是否是 100 的倍数。所以你可以只使用模运算符:

where freq % 100 = 0

有些数据库不支持%,而是想要mod()

where mod(freq, 100) = 0

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多