如何计算此列与2行的比率

nbewdwxp  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(524)

我对sql非常陌生,很难计算出第1行(101)除以第2行(576)。

  1. COUNT
  2. 101
  3. 576

我希望输出是一个表示为2位小数的值。
有什么建议吗?
谢谢你的帮助

yjghlzjz

yjghlzjz1#

对于两排来说,这很简单。如果您有一个很大的输入表,并且希望将第一行除以第二行,将第三行除以第四行,等等,那么您需要一个排序列来保存自己。
因此,对于一个两行表(记住,表从不排序),您只需要将较小的数除以较大的数。
下面是:

  1. WITH
  2. -- your input ...
  3. input(counter) AS ( -- count is reserved word, use another name ...
  4. SELECT 101
  5. UNION ALL SELECT 576
  6. )
  7. -- cheat and just divide the smaller by the bigger
  8. -- as "@Gordon Linoff" suggests
  9. -- force a float division by adding a non-integer operand
  10. -- and hard-cast it to DECIMAL(5,2)
  11. SELECT
  12. CAST(
  13. MIN(counter) * 1.00 / MAX(counter)
  14. AS DECIMAL(5,2)
  15. ) AS result
  16. FROM input;
  17. -- out result
  18. -- out ----------
  19. -- out 0.18

但是,如果您有许多行,并且总是需要将第一行除以第二行,将第三行除以第四行,即顺序中的每一奇数行除以下一偶数行,则需要一个排序列。
你的问题只是你的建议,还是有更多的问题?

展开查看全部
3mpgtkmj

3mpgtkmj2#

表中没有“1”或“2”行。表表示无序的集合,因此如果没有列指定顺序,就没有第一行或第二行。
可以使用聚合将最小值除以最大值:

  1. select min(count) * 1.0 / max(count)
  2. from t;

注意 * 1.0 . postgres做整数除法,所以你想转换成小数点。

相关问题