metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-28 11:45 pm

Кложурь это новый SQL или "нам гамон"

http://justy-tylor.livejournal.com/205808.html?thread=873456#t873456 "глупо ожидать удобства от древнего бухгалтерского DSL в двадцать первом веке." - это про SQL, который изначально вообще задумывался вроде для разного рода бухгалтеров и экономистов, но они "не осилили".

Я вот думаю, что Clojure на роль бухгалтерского DSL подходит гораздо лучше :)

[identity profile] metaclass.livejournal.com 2013-04-29 11:15 am (UTC)(link)
Можно. Что-то вроде
select * from
(select month,1 k, item, sum(amount) from Items
group by 1,2,3
union
select month,2 k, '', sum(amount) from items
group by 1,2,3
) order by month,k

ну или помудрить с CTE, чтобы два раза не вставать к основной таблице.

[identity profile] bydl0coder.livejournal.com 2013-04-29 04:24 pm (UTC)(link)
и так двенадцать раз, ага.

[identity profile] metaclass.livejournal.com 2013-04-29 06:22 pm (UTC)(link)
см, ссылку на fiddle

[identity profile] bydl0coder.livejournal.com 2013-04-29 07:07 pm (UTC)(link)
Вот я лох. Но проблемы видны, в общем.

[identity profile] metaclass.livejournal.com 2013-04-29 07:13 pm (UTC)(link)
Да, если требования чуть сложнее - sql превращается в тыкву.
В итоге, один запрос с аггрегацией я делаю на SQL а всю постобработку типа "показать итоги до, после, сверху, сбоку, спереди и сзади" - на Clojure.

[identity profile] bydl0coder.livejournal.com 2013-04-29 09:48 pm (UTC)(link)
Я тоже так делаю, но в сишарпе получаются ебанутейшие типы, да и в рубях тоже не особо приятно map'ы разбирать. В Clojure какой-то крутой синстаксис для мапов, насколько я понимаю.