|
|
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
можно ли добиться определённого порядка следования в list? Например, вот так гарантирован порядок? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 19:31:18 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
P.S. на самом деле интересует не list, а sum. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 19:31:43 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
buddenна самом деле интересует не list, а sum. От перестановки мест слагаемых сумма не меняется. (с) математика первого класса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 19:39:00 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, в первом классе не меняется, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 20:18:03 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
budden> Например, вот так гарантирован порядок? Да. budden> P.S. на самом деле интересует не list, а sum. Для SUM порядок не имеет значения. Для чего на самом деле понадобилось? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 20:28:38 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, при сложении нескольких чисел с плавающей точкой порядок имеет значение. За LIST спасибо. А для SUM так будет гарантирован порядок? Вообще-то мне нужно свернуть множество строк документа в некую контрольную сумму, чтобы удостовериться, что два множества записей совпадают (с большой вероятностью), но ведь нет же в природе агрегатной функции md5sum? И если бы она была, то и для неё порядок был бы важен. Хотя, md5 есть в rfunc, можно хранимку написать на этой основе. Будет не лень - переделаю, а пока сделаю sum с order by. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 23:39:33 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
buddenпри сложении нескольких чисел с плавающей точкой А кто ж тебя, болезного, заставляет складывать плавающие числа?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 23:47:23 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
budden> при сложении нескольких чисел с плавающей точкой порядок имеет значение Приведите пример, а-то как-то не очень понятно. Точность теряется что ли или в чём проблема? > А для SUM так будет гарантирован порядок? Настолько, насколько он вообще имеет смысл. > контрольную сумму ... а пока сделаю sum с order by. А SUM чего Вы собрались делать ? CRC что ли? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 02:30:56 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамbudden> при сложении нескольких чисел с плавающей точкой порядок имеет значение Приведите пример, а-то как-то не очень понятно. Точность теряется что ли или в чём проблема? budden, я бы тоже с удовольствием посмотрел пример, а также правило, по которому лучше всего суммировать числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 10:55:17 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 11:20:47 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
RWolf, это называется "неправильный подход". Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. дает результат: a=1,00000010 : b=1,00000010 PS: Single - это не совсем используемый в сервере Double precision ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 11:50:28 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
DzirtRWolf, это называется "неправильный подход". Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. дает результат: a=1,00000010 : b=1,00000010 PS: Single - это не совсем используемый в сервере Double precision Такова сама природа операций над числами с плавающей точкой и точно так-же будет и с Double precision зы. примеры придумывать лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 12:58:11 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
RWolf Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но, откуда следует, что суммировать их надо как-то по-особому, и как именно? (в этом был мой вопрос). В общем случае, эту неточность надо просто учитывать, или выбрать более подходящие типы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 14:36:43 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
DzirtSingle - это не совсем используемый в сервере Double precision Dzirt, RWolf в InterBase и Firebird FLOAT - эквивалент дельфийскому single DOUBLE PRECISION - double FLOAT используют разве что те, кто не в курсе его низкой точности, по ошибке воспринимая, что TField.AsFloat работает с float. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 14:51:46 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, пример возможного несовпадения привёл RWolf, m7m верно отметил, что оно будет иметь место и для double precision. Я хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел. Плавающую точку выбрал, чтобы не рассчитывать диапазоны и не сталкиваться с переполнениями. Если складывать не по порядку возрастания, одинаковые множества чисел могут при сложении дать разный результат, т.е. контрольная сумма не будет работать. А если упорядочить по возрастанию, одинаковые множества чисел всегда дадут одинаковый результат. Однако, учитывая, что "разрешающая способность" этого способа неизвестна (может оказаться, что он ненадёжно отличает несовпадающие множества) и вопрос с порядком на тот момент был неясен, переделал всё на md5 с помощью хранимой процедуры и rfunc. Понятно, что и md5 ничего не гарантирует - надёжно сравнить множества заранее неизвестной длины с помощью контрольной суммы фиксированного размера невозможно. Но у него хотя бы больше объем данных и он предназначен именно для контрольных сумм, поэтому я его взял. Но вопрос о порядке всё равно интересен, потому что (наверное) можно включить в агрегатную функцию выражение с побочными эффектами, тогда порядок опять же будет иметь значение. Ладно, буду теперь считать, что в приведённой мной конструкции порядок гарантирован. Спасибо. S.G., надеюсь, теперь понятно, какова моя цель и какое правило я предлагал. Вообще говоря, правильного способа сложения чисел не существует - всё зависит от цели и от того, что это за числа. Для моей цели было достаточно упорядочить по возрастанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 21:46:42 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
buddenДля моей цели было достаточно упорядочить по возрастанию. Сравнение двух упорядоченных множеств осуществляется как и их суммирование - в один проход. Но при этом даёт абсолютно точный результат. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 22:03:36 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
budden> Я хотел сделать быстрогрязную контрольную budden> сумму для сравнения _множеств_ пар целых чисел. Реализаций много разных, от сравнения самих значений до "хеша от хеша" или List(Id), о котором я уже упоминал. С учётом того, что итак написана ХП - быстрее было бы пробегаться в ней сразу, а не задействовать хеш и делать сравнение "снаружи". > А если упорядочить по возрастанию, одинаковые > множества чисел всегда дадут одинаковый результат. Ну, если есть проблемы с потерей точности - я бы не был в этом так уверен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 23:04:58 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамbuddenА если упорядочить по возрастанию, одинаковые множества чисел всегда дадут одинаковый результат. Ну, если есть проблемы с потерей точности - я бы не был в этом так уверен. Даже без потери точности - проблема в том, что разные множества чисел тоже дадут одинаковый результат. А вообще у меня дежавю: абсолютно аналогичный топик был тут лет пять назад. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 23:09:18 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
DS> Даже без потери точности - проблема в том, что разные DS> множества чисел тоже дадут одинаковый результат. Не "дадут", а "могут дать". Это уже от хеша зависит. DS> А вообще у меня дежавю: абсолютно аналогичный топик был тут лет пять назад. Что-то я не припомню. Ты про терминологический спор про "генераторы не являются хешами"? :-) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 23:10:50 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТы про терминологический спор про "генераторы не являются хешами"? :-) Нет, я про быстрое сравнение множеств на равенство (точнее неравенство) с помощью агрегатов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 23:27:13 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
S.G.Ну как-бы всем известно, что числа не-целочисленные, (тип real) , имеют неточное машинное представление, и в процессе вычислений накапливается ошибка. Но, откуда следует, что суммировать их надо как-то по-особому, и как именно? (в этом был мой вопрос).Ну, как бы, основы приближённых вычислений - суммирование ведётся от меньших к большим. P.S. Это свойство именно приближённых вычислений, которое не зависит от способа представления чисел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 23:58:46 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
DS> Нет, я про быстрое сравнение множеств на равенство DS> (точнее неравенство) с помощью агрегатов. Найди ссылку, плиз, а-то я что-то не припомню. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 01:31:23 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамНайди ссылку, плиз, а-то я что-то не припомню. http://www.sql.ru/forum/928247/metod-bystrogo-poiska-razlichiy-mezhdu-dvumya-tablicami-sinhronizaciya Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 01:50:13 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Спасибо. Да, забавный топик, хоть и не 5 лет назад. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 11:38:34 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov... суммирование ведётся от меньших к большим. P.S. Это свойство именно приближённых вычислений, которое не зависит от способа представления чисел.да, спасибо. почитал немного: раз два три ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 12:29:27 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Если сравнение суммы именно целых чисел - что мешает сравнить Trunc(Sum(...)) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 10:30:28 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal> Если сравнение суммы именно целых чисел Не если. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 15:16:23 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, ТСЯ хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел. Плавающую точку выбрал, чтобы не рассчитывать диапазоны и не сталкиваться с переполнениями. А что ты хотел сказать своим постом - я не постиг, увы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 20:17:58 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal> А что ты хотел сказать своим постом - я не постиг, увы Что он не целые числа суммирует. Что прямо сказано в цитате. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 21:10:21 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, суммирует он фактически целые, только скастованные в дабл. Cоответственно с дробной частью можно обращаться как угодно. И никто не мешает тем или иным способом у итоговых значений откусить эту дробную часть, после чего сравнивать их спокойненько, не заморачиваясь с порядком суммирования. Если я правильно понял поинт данного топика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 21:28:04 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal> суммирует он фактически целые, только скастованные в дабл Кто вам сказал такую глупость? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 22:24:56 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, buddenЯ хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 09:15:48 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, из другого треда Гаджимурадов РустамТопик не читал Традиция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 10:06:26 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, >Ну, если есть проблемы с потерей точности - >я бы не был в этом так уверен. Ну вроде бы операции с плавающими числами всё же детерминированы и, соответственно, результат данной операции над данными числами (полученными из целых) тоже всегда будет одинаковой. По индукции получаем, что результат будет одинаковый. Dimitry Sibiryakov , сравнивать множества непосредственно - это неплохой вариант, но он подразумевает, что эти множества доступны одновременно. Изначально у меня была сверка двух разных баз на разных платформах, сначала выбирались данные (включая контрольные суммы) из одной базы, выгружались в файл, файл загружался в другую базу и дальше шло сравнение. Сделать по другому можно, но это труд. Сейчас у меня множества доступны одновременно и можно было бы их сравнить. Но завтра мне понадобится новая сверка, а хочется иметь повторно используемый инструмент. Естественно, замена множества любой хеш-функцией (хоть суммой, хоть md5) даёт риск потери различия между множествами, которые на самом деле различны. Но я счёл этот риск достаточно малым (хотя и не считал его). Если мы упустим отличие, оно всё равно потом где-нибудь ещё вылезет, да и цена ошибки тут не такая, что "ракета промахнулась мимо Марса". Кто-то ещё, list(id) не гарантирует отсутствие переполнения. В общем, всем спасибо за участие! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:21:29 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, я умножал первое из них на 0.001 и умножал на второе, но можно было и просто кастовать в дабл. Смысл в том, чтобы избежать возможного переполнения целых. Переполнить плавающее - это нужно очень сильно постараться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:23:24 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
WildSery> Какая разница что он хотел и какие исходные данные, если он делает совсем иначе (без разницы, кастованием, вычислением хеша или как-то ещё) ? Модератор: Рустам, предупреждение. Уж от тебя-то не ожидал Модератор: Fr0sT-Brutal, а ты не разжигай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 14:50:40 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
budden> Изначально у меня была сверка двух разных баз на разных платформах Это имело смысл озвучить сразу - не было бы многих вопросов. :) У меня было похожее, когда множества были разнесены не по БД, а по "местонахождению" и по времени. > даёт риск потери различия между множествами, которые на самом деле различны Поэтому неравенство даёт 100% гарантию, а равенство - лишь повод проверить сами множества (сразу или после). > list(id) не гарантирует отсутствие переполнения. В каком смысле? Там какие-то сотни тысяч записей или в чём дело? Есть БЛОБ. Есть промежуточная свёртка. Есть ещё куча воркэраундов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 14:54:22 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
топег просто пес(т)ня... циклический избыточный код придумали лохи. ибо каждый юный гений изобретает свой велосипед. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 16:08:54 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
> Там какие-то сотни тысяч записей или в чём дело? > Есть БЛОБ. Есть промежуточная свёртка. Есть ещё куча воркэраундов. Мне потом в Excel его надо выгрузить. Промежуточная свёртка - видимо, с потерей информации всё равно, а чем она тогда лучше моего md5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 17:30:03 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий> циклический избыточный код придумали лохи. Так о нём сразу было сказано (спрошено). И это тот же хеш. budden> чем она тогда лучше моего md5? Не требует предв. расчётов, дешевле и быстрее, надежнее опять же (не сравнивал, но думаю это итак очевидно, с учётом количества данных). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 17:46:51 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, ткни в примерчик плиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 18:11:26 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Ну Execute Block, который выбирает порциями по 1000 записей, делает их List, считает по нему хеш/СКС/etc и дальше по циклу. Ты хеши хранишь или пересчитываешь каждый раз в ХП? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 18:27:09 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, ну, чем такое делать, проще просто сразу md5 сумму, как я и сделал. Хеши я не храню, у меня делается выборка для сверки, дальше это выгружается в Excel, а дальше человек смотрит (на несовпадение множеств и на другие возможные проблемы). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 22:20:17 |
|
||
|
order by и агрегатные выражения
|
|||
|---|---|---|---|
|
#18+
budden> проще просто сразу md5 сумму, как я и сделал Это дело вкуса и производительности. Лично я бы в любом случае предпочёл избежать использования UDF-функции при наличии встроенных List и Hash. В общем, ладно, раз ответы на вопросы получены и проблема уже решена, то чего тут воду в ступе толочь. Успехов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 22:47:44 |
|
||
|
|

start [/forum/search_topic.php?author=Stoma&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 680ms |
| total: | 978ms |

| 0 / 0 |
