Sql 如何计算此列与2行的比率
我对SQL非常陌生,很难计算出第1行(101)除以第2行(576)的热度 我希望输出是一个表示为小数点后2位的单个值 有什么建议吗Sql 如何计算此列与2行的比率,sql,postgresql,decimal,divide,Sql,Postgresql,Decimal,Divide,我对SQL非常陌生,很难计算出第1行(101)除以第2行(576)的热度 我希望输出是一个表示为小数点后2位的单个值 有什么建议吗 感谢您的帮助表中没有“1”行或“2”行。表表示无序集,因此如果没有指定排序的列,就没有第一行或第二行 可以使用聚合将最小值除以最大值: select min(count) * 1.0 / max(count) from t; 请注意*1.0。Postgres进行整数除法,因此您需要转换为小数点。表中没有“1”行或“2”行。表表示无序集,因此如果没有指定排序的列,
感谢您的帮助表中没有“1”行或“2”行。表表示无序集,因此如果没有指定排序的列,就没有第一行或第二行 可以使用聚合将最小值除以最大值:
select min(count) * 1.0 / max(count)
from t;
请注意
*1.0
。Postgres进行整数除法,因此您需要转换为小数点。表中没有“1”行或“2”行。表表示无序集,因此如果没有指定排序的列,就没有第一行或第二行
可以使用聚合将最小值除以最大值:
select min(count) * 1.0 / max(count)
from t;
请注意*1.0
。Postgres进行整数除法,所以您需要转换为小数点。对于两行,这很简单。
如果您有一个大的输入表,并且希望将第一行除以第二行,将第三行除以第四行,等等,那么您需要一个排序列来保存自己
因此,对于一个两行表(记住,表从不排序),您只需要将较小的数字除以较大的数字
下面是:
WITH
-- your input ...
input(counter) AS ( -- count is reserved word, use another name ...
SELECT 101
UNION ALL SELECT 576
)
-- cheat and just divide the smaller by the bigger
-- as "@Gordon Linoff" suggests
-- force a float division by adding a non-integer operand
-- and hard-cast it to DECIMAL(5,2)
SELECT
CAST(
MIN(counter) * 1.00 / MAX(counter)
AS DECIMAL(5,2)
) AS result
FROM input;
-- out result
-- out ----------
-- out 0.18
但是,如果您有许多行,并且总是需要将第一行除以第二行,将第三行除以第四行,也就是说,顺序中的每一奇数行除以顺序中的下一偶数行,那么您需要一个排序列
您的问题是否正是您所建议的,还是还有更多问题?对于两行,这很简单。
如果您有一个大的输入表,并且希望将第一行除以第二行,将第三行除以第四行,等等,那么您需要一个排序列来保存自己
因此,对于一个两行表(记住,表从不排序),您只需要将较小的数字除以较大的数字
下面是:
WITH
-- your input ...
input(counter) AS ( -- count is reserved word, use another name ...
SELECT 101
UNION ALL SELECT 576
)
-- cheat and just divide the smaller by the bigger
-- as "@Gordon Linoff" suggests
-- force a float division by adding a non-integer operand
-- and hard-cast it to DECIMAL(5,2)
SELECT
CAST(
MIN(counter) * 1.00 / MAX(counter)
AS DECIMAL(5,2)
) AS result
FROM input;
-- out result
-- out ----------
-- out 0.18
但是,如果您有许多行,并且总是需要将第一行除以第二行,将第三行除以第四行,也就是说,顺序中的每一奇数行除以顺序中的下一偶数行,那么您需要一个排序列
你的问题是你建议的,还是还有更多的问题