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

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

Date: 2013-04-29 07:01 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
3. От SQL не хватает группировки типа "по неделям и итог по каждому месяцу". Остальное все отлично.

Date: 2013-04-29 07:11 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Ну что уж тут поделаешь, раз не хватает.

Date: 2013-04-29 08:28 am (UTC)
From: [identity profile] nivanych.livejournal.com
Скажите, а как у вас проявляется эта нехватка?
Сильно ли она вас беспокоит по ночам?

Date: 2013-04-29 09:44 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Проявляется в том, что нужно делать группировку на клиенте, а она, во-первых, на мейнстримных языках выглядит очень плохо, а во-вторых, логика размазывается по клиенту и базе. Из базы надо либо совсем сырые данные брать либо уже готовое все.

Date: 2013-04-29 10:42 am (UTC)
From: [identity profile] nivanych.livejournal.com
Что это за SQL у вас такой?

Date: 2013-04-29 10:43 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Блядь, тут кто-нибудь нормально разговаривать умеет?

Date: 2013-04-29 10:47 am (UTC)
From: [identity profile] nivanych.livejournal.com
Хорошо. Скажу нормально.
Читайте доки бля!

Date: 2013-04-29 10:58 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
можно ли без извратов получить от базы такое:

month | item |amount
---------------------
01.13 | guns | 100
01.13 | butter | 150
null | null | 250
02.13 | guns | 50
02.13 | butter | 70
null | null | 120

Date: 2013-04-29 11:08 am (UTC)
From: [identity profile] nivanych.livejournal.com
Смотря что вы считаете извратами.
Можно получить при помощи SQL.
http://www.postgresql.org/docs/devel/static/tutorial-window.html

Date: 2013-04-29 11:11 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Получить, да не то.

Date: 2013-04-29 11:23 am (UTC)
From: [identity profile] nivanych.livejournal.com
Ога. Не то. Там цЫферки другие написаны.
Надо-то что? Группировки типа "по неделям и итог по каждому месяцу"?
И в каком именно SQL? Поцгрес подойдёт?
http://www.postgresql.org/docs/devel/static/functions-datetime.html
Возможно, из приведённой вами гипотетической выборки из базы и можно догадаться в точности, что именно вам нужно, но я этого делать не буду.

Date: 2013-04-29 03:56 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Циферки те, да не там.

Date: 2013-04-29 11:15 am (UTC)
From: [identity profile] metaclass.livejournal.com
Можно. Что-то вроде
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, чтобы два раза не вставать к основной таблице.

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

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

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

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

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

Date: 2013-04-29 03:55 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
Дайте исходные данные, я вам запрос напишу.

Date: 2013-04-29 04:22 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
http://sqlfiddle.com/#!1/e390c/1

Написанный там запрос делает не то, что надо. Надо, чтобы итог за месяц был под итогом по товарам.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 9th, 2025 12:34 pm
Powered by Dreamwidth Studios