我试图将SQL查询的最大和最小结果拉到Clojure中,这样我就可以对它们进行数学分析,但我不确定为什么会出现错误.
我已经在代码中使用了max和min函数来尝试确定这些结果,尽管我一直收到两个错误,这些错误似乎与我使用:counter关键字的方式有关.
从SQL查询的映射中返回的数据如下所示:
{:date1 "20131007", :data "object1", :counter 1000}
{:date1 "20131007", :data "object2", :counter 50}
{:date1 "20131007", :data "object3", :counter 230}
Run Code Online (Sandbox Code Playgroud)
当我使用这段代码时:
minvalue(min(map(keyword :counter)data2))
maxvalue(max(map(keyword :counter)data2))
valrange(- maxvalue minvalue)
valpc(* (/ valrange 100) 10)
x(- maxvalue valpc)
Run Code Online (Sandbox Code Playgroud)
我显然希望将minvalue设置为50并将maxvalue设置为1000,尽管我收到此错误:
java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to java.lang.Number
Run Code Online (Sandbox Code Playgroud)
如果我从代码中删除map函数并再次运行它,我收到此错误:
java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.Number
Run Code Online (Sandbox Code Playgroud)
任何帮助都是值得赞赏的,因为我完全陷入了困境(而且我可能是Clojure的新手)谢谢