Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 对EXTO结果进行计算_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir 对EXTO结果进行计算

Elixir 对EXTO结果进行计算,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我想对体外受精结果进行计算。我有一个产品表,有颜色、等级、品牌标识、价格。我想按范围0-1、1-2、2-3、3-4、4-5和每个范围内的产品数量对评级进行分组。我对长生不老药和埃克托很陌生。感谢所有帮助。这里有一个简单的方法,只需使用floor即可获得评级范围下限: defmodule QueryHelpers @doc "floor function for postgres" defmacro floor(x) do quote do fragment("flo

我想对体外受精结果进行计算。我有一个产品表,有颜色、等级、品牌标识、价格。我想按范围0-1、1-2、2-3、3-4、4-5和每个范围内的产品数量对评级进行分组。我对长生不老药和埃克托很陌生。感谢所有帮助。

这里有一个简单的方法,只需使用floor即可获得评级范围下限:

defmodule QueryHelpers
  @doc "floor function for postgres"
  defmacro floor(x) do
    quote do 
      fragment("floor(?)", unquote(x))
    end
  end
end

defmodule A
  import QueryHelpers

  def product_rating_counts() do
    from product in Product, 
    group_by: floor(product.rating),
    select: %{rating: floor(product.rating), count: count(1)}),
    order_by: [asc: 1]
  end
end

iex> Repo.all(A.product_rating_counts())
[%{count: 2, rating: #Decimal<1>}, 
 %{count: 1, rating: #Decimal<2>},
 %{count: 1, rating: #Decimal<4>}]

请告诉我们你最初的努力。根据数据库的不同,我想在数据库端做这件事可能比在长生不老药端更容易。如果我是你,我会寻找一个SQL查询来创建你想要的范围。因为我还想按品牌id分组,并获得每个品牌id中的产品数量,以及按价格分组。我不确定在1个查询中是否有这样做的方法。所以我认为最好是查询所有产品并执行计算以获得每个组的结果有没有一种方法可以在一个查询中进行分组并计算多个列?因为我想根据品牌id、颜色和价格进行分组和产品统计