sql - 除法结果为零时返回字符串

标签 sql postgresql null case coalesce

我有一个这样的 SQL 查询:

SELECT 
u.id,
tu.score/(CASE tu.mo_count  WHEN 0 THEN NULL ELSE tu.mo_count END) AS score_avg
FROM tournament_userscore tu
INNER JOIN users u ON u.id = tu.user_id
WHERE tournament_id = 1
ORDER BY tu.score DESC

tu.mo_count 为零时,Null 被替换为零。我如何为这一行设置一个类似 'EMPTY' 的字符串:

tu.score/(CASE tu.mo_count  WHEN 0 THEN NULL ELSE tu.mo_count END) AS score_avg

我的意思是,当除法结果为 时,我想返回“anything ”字符串。

最佳答案

如果不想使用 CASE,可以使用 NULLIF 和 COALESCE:

SELECT 
  u.id,
  COALESCE(tu.score/NULLIF(tu.mo_count, 0), 0) AS score_avg
FROM tournament_userscore tu
  INNER JOIN users u ON u.id = tu.user_id
WHERE 
  tournament_id = 1
ORDER BY 
  tu.score DESC;

关于sql - 除法结果为零时返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095033/

相关文章:

java - 如何在使用 LOAD DATA 命令时跳过 csv 文件的行?

mysql - 为什么这个 MySQL 查询花费这么长时间?我该如何修复它?

MySQL 可能进行团队对团队比赛,其中一名玩家可以属于多个团队

postgresql - GNU 信息格式的 Postgres 文档

mysql - 在 mySQL 中检查两个表,其中 1 个结果可以为 NULL

sql - ORDER BY 取决于两个日期列

json - 向 Postgres 查询 JSON 中的项目数

sql - 多列的Postgres标准偏差

tsql - SQL查询,如果值为null则返回1

java - 每次java.lang.exception.getCause()都为null