|   |   | 
| 
 | Задачка на запросы для разминки мозгов | ☑ | ||
|---|---|---|---|---|
| 0
    
        Sewace 20.02.14✎ 16:53 | 
        Навеяно темой "JOB: Насколько вопрос сложен для соискателя?" про "СрезПредПредПоследних".
 Не первый раз попадается такая задачка. Хочу ее предложить тут в качестве разминки для мозга. Итак, предположим есть временная таблица "ТЗ" (это чтобы не привязываться к объектам конфигурации) со следующими полями: - "ДатаСобытия" (Дата, без времени); - "Контрагент"; - "Событие". Пример заполнения: 01.02.2014, Иванов, Звонок 02.02.2014, Иванов, Встреча 04.02.2014, Петров, Звонок. Требуется получить таблицу уникальных контрагентов с указанием последних даты события и самого события. Колонки: "Контрагент", "ПоследняяДата", "ПоследнееСобытие". Для приведенного примера результат должен быть таким: Иванов, 02.02.2014, Встреча Петров, 04.02.2014, Звонок. Сразу хочу оговориться, что трудность возникает в том случае, если за один день у данного контрагента будет несколько событий. В этом случае надо вывести ЛЮБОЕ из этих событий (нет способа определить из таблицы какое было раньше или позже). Вот. Вот такое задание можно дать на собеседовании. Если кому-то интересно, то можно пораскинуть мозгами и выкладывать тут примеры запросов. | |||
| 1
    
        ДенисЧ 20.02.14✎ 16:56 | 
        Скучно. Тупая задача.     | |||
| 2
    
        МойКодУныл 20.02.14✎ 16:57 | 
        Первая выборка с группировкой по контрагенту дата МАКСИМУМ (на событие не смотрим)
 соединяем с полной таблицей левым соединением по дате и контаргенту, потом полученное группируем по Контаргенту, дате - Событие Максимум. | |||
| 3
    
        PR 20.02.14✎ 17:01 | 
        (0) 10 задача из http://odinesnik.ru/task.txt     | |||
| 4
    
        fisher 20.02.14✎ 17:43 | 
        Проще сразу спросить - "читали ли вы статью на мисте про срез последних на каждую дату в запросе?"     | |||
| 5
    
        Фатих Ридванов 20.02.14✎ 17:53 | 
        (0) Вот пример запроса.
 ВЫБРАТЬ МАКСИМУМ(СобытиеТЗ.Дата) КАК Дата, СобытиеТЗ.Контрагент ПОМЕСТИТЬ ТЗ ИЗ Документ.Событие.ТЗ КАК СобытиеТЗ СГРУППИРОВАТЬ ПО СобытиеТЗ.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СобытиеТЗ.Контрагент, СобытиеТЗ.Дата, МАКСИМУМ(СобытиеТЗ.События) КАК События ИЗ Документ.Событие.ТЗ КАК СобытиеТЗ ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ ПО СобытиеТЗ.Контрагент= ТЗ.Контрагент И СобытиеТЗ.Дата = ТЗ.Дата СГРУППИРОВАТЬ ПО СобытиеТЗ.Контрагент, СобытиеТЗ.Дата | |||
| 6
    
        Feunoir 20.02.14✎ 18:01 | 
        (0) А вот в FoxPro можно было использовать агрегатные функции в SQL запросе без обязательной группировки по остальным полям. Вот там была веселуха. Правда это было двадцать лет назад и подробностей я уже не припомню. Но для меня был шок, когда я узнал, что например Interbase (да и вообще любая адекватная СУБД), такого не позволяет.     | |||
| 7
    
        Torquader 20.02.14✎ 22:06 | 
        (6) В семёрке тоже можно функцию в запросе попытаться использовать, но скорость исполнения говорит, что не нужно.     | |||
| 8
    
        МихаилМ 21.02.14✎ 01:17 | 
        (7)
 ms sql profiler и filemon . "говортят" почему. | |||
| 9
    
        МишельЛагранж 21.02.14✎ 01:31 | 
        (0)Сразу хочу оговориться, что трудность возникает в том случае
 трудность возникает в каком угодно случае: - строки задвоены - будут указаны не все данные - данные не верны - ... | |||
| 10
    
        МишельЛагранж 21.02.14✎ 02:39 | 
        (0) пора организовывать на мисте клуб по интересам "Стажеры обмениваются опытом".
 Сплошь темы оттуда пошли. | |||
| 11
    
        Torquader 21.02.14✎ 15:14 | 
        Так и запишем "клуб молодых дятлов".     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |