2013-11-19 4 views
0

Я бегу запрос, который возвращает один номер, например, говорят, 35.функция Clojure сохранить smnaller значение числа возвращаемых запросом

Я хочу сохранить этот номер в Clojure,

затем получите 20% этого значения и сохраните это число.

Я хочу, чтобы передать это значение 20% в запросы на LIMIT на 20%.

Причина, по которой этот запрос основан на парето.

Может ли кто-нибудь помочь в этом?

запрос (ул "SELECT COUNT (Application) AS номер из AppTable")

онемели (карта # (получить% "номер") запрос)

затем нужно разделить Num на 5, сэкономить новый номер с этим значением и использовать его для перехода к запросам.

+0

Пример кода лучше понять проблему больше. – Chiron

ответ

0

Вопрос в том, что вы подразумеваете под словом «затем». Является ли это частью той же операции? Если да, то используйте следующее:

(let [query-result (my-query ...) 
     one-fifth (double (* 0.2 query-result))] 
    (my-other-queries one-fifth ...)) 

Если вы хотите выполнить заключительные запросы независимо от первого запроса, вы, вероятно, придется использовать какой-то изменяемым состоянием, например, atom:

(def query-result (atom nil)) 
... 
(reset! query-result (my-query ...)) 
... 
(my-other-queries (double (* 0.2 @query-result)) ...) 

Обратите внимание, что вы всегда можете создать значение 20% от первоначального результата запроса. Кроме того, лучше проверить, действительно ли query-result содержит значение перед запуском my-other-queries.

+0

сохранит его как double, разрешит его передать в запрос? Я имею в виду, если исходный запрос возвращает 36, и вы умножаете его на 0.2, это будет 7.2, и, очевидно, вы не можете получить результаты LIMIt в 7.2 в SQL-запросе. – Blue42

+0

Ну, вы также можете преобразовать его в длинный. Вы можете захотеть обвести его вручную, хотя, если вы хотите добиться определенного поведения. – xsc

Смежные вопросы