我不能写一个条件,让我计算行数,除以包含单词Tetris的行数,并显示除法的结果试图
Tetris
Select count(*) From table_name Where main/(select main from table_name where main="Tetris")
字符串
的数据
mu0hgdu01#
你可以将每一行的总和除以俄罗斯方块每一行的总和:
SELECT SUM(1.0) / SUM(CASE WHEN main='Tetris' THEN 1 END) FROM table_name
tvokkenx2#
从数据库中获取的数据只是放入SELECT子句中的数据。WHERE子句在这里专门根据 predicate 进行过滤。您的查询只需移动SELECT子句中的麻烦部分即可工作。请注意,要获得ratio,您需要使用强制转换操作将COUNT(*)转换为浮点数。最后,sql中的字符串值是单引号的。双引号用于标识符。
SELECT
WHERE
COUNT(*)
sql
SELECT COUNT(*)::DECIMAL / (SELECT COUNT(*) FROM table_name WHERE main='Tetris') FROM table_name
字符串上面的一个稍微好一点的版本使用FILTER作为聚合函数:
FILTER
SELECT COUNT(*)::DECIMAL / COUNT(*) FILTER (WHERE main='Tetris') FROM table_name
型或者这里有一个CASE的版本,它利用了NULL值不参与计数的事实。
CASE
NULL
SELECT COUNT(*)::DECIMAL / COUNT(CASE WHEN main='Tetris' THEN 1 ELSE NULL END) FROM table_name
型
qq24tv8q3#
您尝试计算的是“tetris”出现率的倒数。除了Atmo提供的各种可能的解决方案之外,这里还有一种使用聚合函数AVG的替代方案。
SELECT 1.0 / AVG(CASE WHEN main = 'tetris' THEN 1.0 ELSE 0.0 END) FROM table_name;
3条答案
按热度按时间mu0hgdu01#
你可以将每一行的总和除以俄罗斯方块每一行的总和:
字符串
tvokkenx2#
从数据库中获取的数据只是放入
SELECT
子句中的数据。WHERE
子句在这里专门根据 predicate 进行过滤。您的查询只需移动
SELECT
子句中的麻烦部分即可工作。请注意,要获得ratio,您需要使用强制转换操作将COUNT(*)
转换为浮点数。最后,
sql
中的字符串值是单引号的。双引号用于标识符。字符串
上面的一个稍微好一点的版本使用
FILTER
作为聚合函数:型
或者这里有一个
CASE
的版本,它利用了NULL
值不参与计数的事实。型
qq24tv8q3#
您尝试计算的是“tetris”出现率的倒数。除了Atmo提供的各种可能的解决方案之外,这里还有一种使用聚合函数AVG的替代方案。
字符串