Изучаю SQL и не только.

  1. 8 г. назад

    Есть простая таблица
    Дата, ИД_запроса, Сайт, Позиция

    Как вытащить ИД_запроса(ов) с самыми динамично меняющимися позициями сайтов ?
    Позиции от 1 до 50

    Еще интересно было бы получить самый динамично поднимающийся сайт, из этой таблички ?

    Если есть какие мануалы в области анализа, буду премного благодарен за ссылки и прочую инфу.

    Какие в целом будут идеи и мысли ?

  2. Count()

    Ответы: (2)
  3. Fynjy Count()

    Ну это сильная функция, только чЁ коунтить то ?

    можно даже убрать ИД запроса, пусть будет просто Дата, Сайт, Позиция
    Потом циклом, пройдусь по каждому ИД_запросу.

  4. "динамично меняющимися" - каунт за период по сайту+позиция

  5. Если MS SQL можно заюзать приблуду https://technet.microsoft.com/ru-ru/library/bb522489.aspx

    Ответы: (5)
  6. Fynjy Если MS SQL можно заюзать приблуду https://technet.microsoft.com/ru-ru/library/bb522489.aspx

    не я на постгресе пока мучу

  7. тебе нужно дополнить таблицу аналитическими показателями. например, при изменении позиции пиши еще два показателя: время поднятия на прошлую позицию и время поднятия на текущую позицию. Соответственно, при изменении позиции сайта ты делаешь ВремяПрошлое = ВремяТекущее, а ВремяТекущее = now().

    Потом по разнице этих дат ты сможешь судить, насколько быстро сайт перескочил с предыдущей позиции на текущую, и сранжировать. Ну а чем больше позиций нужно, тем больше колонок. В этом случае - доп.таблица аналитики.

    Ответы: (8)
  8. Count() + сортировка по убыванию, первые 50

  9. bvn13 тебе нужно дополнить таблицу аналитическими показателями. например, при изменении позиции пиши еще два показателя: время поднятия на прошлую позицию и время поднятия на текущую позицию. Соответственно, при изменении позиции сайта ты делаешь ВремяПрошлое = ВремяТекущее, а ВремяТекущее = now().

    Потом по разнице этих дат ты сможешь судить, насколько быстро сайт перескочил с предыдущей позиции на текущую, и сранжировать. Ну а чем больше позиций нужно, тем больше колонок. В этом случае - доп.таблица аналитики.

    ну у меня колонка дата есть, зачем мне делать еще колонки ?

    я сделал count + позиция мин. и макс это легко, только вот чего не понятно то ли сайт стал выше, а то ли ниже.

  10. То есть мне короче нужно получить, позиция с самой первой даты, позиция минимум, позиция максимум и позиция с последней датой. Вот по этим 4-ем параметрам уже можно что-то сделать. За идеи спасибо. Буду дальше кубаторить!

  11. Уважаемые что-то туплю с утра, поможите!

    Нужно удалить дубли строк в базе, но есть колонка уникального идентификатора(oid)
    то есть в остальном данные в колонках одинаковые, то есть я сгруппировал, есть и задвоенные и затроенные данные, нужно оставить любую строку из дублирующихся строк с любым oid, как не вкурю ?

    Спасибо!

  12. 05.04.2016 07:24:24 отредактировано sda553

    delete from table where id in
    (select min(id) from table group by field1,fiel2,.... having count(1)>1)
    здесь field1,field2... перечисление полей по которым значимы дубли. Удаляем строку с минимальным id

    Ответы: (12)
  13. (11) У них ИД уникальны, он не дает мне хэвинг коунт больше 1!

    Ответы: (13) (14)
  14. 05.04.2016 07:28:03 отредактировано sda553

    (12) ты чет гонишь. У них ид уникальные но в group by нет группировки по id.

    Ответы: (14)
  15. sda553 (12) ты чет гонишь. У них ид уникальные но в group by нет группировки по id.

    Семен семеныч! Молодец )))

  16. Если б не постриге, пользовался бы этим
    https://msdn.microsoft.com/ru-ru/library/ms189798(v=sql.120).aspx

    Ответы: (16) (17)
  17. (15) А в постгресе таких фишек нема ?

  18. Ёпрст Если б не постриге, пользовался бы этим
    https://msdn.microsoft.com/ru-ru/library/ms189798(v=sql.120).aspx

    вроде есть оконные функции , не?

  19. (16,17) да хз, постриге не ковырял, думал, что это только в мs реализовали

  20. И снова здравствуйте )

    Есть колонка в табличке. В колонке текстовые предложения, абсолютно разные. Нужно посчитать статистику вхождения каждого слова. Куда копать ? Подскажите.
    Идея у самого такая, разбить эту колонку на отдельное слово и в отдельную таблицу одним столбцом каждое слово и потом просто группировка ? Но может есть еще варианты?
    Спасибо.

    Ответы: (22) (23)
  21. Будущий_Олигарх такая же бездарность, как и Stim

  22. Я правильно понял, что какое то днище решил устроиться на работу и кидает тут под разными никами и в разные ветки задачи с собеседований? ))

  23. (19) обход курсором

    Ответы: (23)
  24. sda553 (19) обход курсором

    Не совсем понял ? Все равно нужно в табличку писать верно в отдельную ?

    Ответы: (24)
  25. (23) да

  26. Полнотекстовый поиск?

    Ответы: (26) (27)
  27. (25) я хз что там у тебя за тексты. Для получения слов из текста может быть достаточно рассплитовать строку по пробелам.

  28. ТеньД Полнотекстовый поиск?

    Пытался вникнуть в него, но там нужно чуть больше чем мои 9 классов (((

    Ответы: (28)
  29. Будущий_Олигарх Пытался вникнуть в него, но там нужно чуть больше чем мои 9 классов (((

  30. (27 В синтакс-помощнике забанили?

    МенеджерПолнотекстовогоПоиска (FullTextSearchManager)
    СоздатьСписок (CreateList)
    Синтаксис:

    СоздатьСписок(<СтрокаПоиска>, <РазмерПорции>)
    Параметры:

    <СтрокаПоиска> (необязательный)

    Тип: Строка.
    Строка для поиска в реквизитах данных (содержит как слова, которые нужно найти, так и поисковые операторы - И, ИЛИ, НЕ, РЯДОМ, скобки, кавычки).
    Поиск может осуществляться по нескольким словам, с использованием поисковых операторов и поиском по точной фразе.
    В строке ввода допускается использование следующих поисковых операторов:
    И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение", и "документ" (с учетом морфологии);
    ИЛИ (OR или | или ,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ";
    НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается;
    РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами.
    Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова).
    Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга. Порядок слов не имеет значения.
    "фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен";
    фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен";
    фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен".
    РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ";
    "" (текст в кавычках) - поиск точной с учетом морфологии фразы , пример: "проведение документа" - эквивалентно: проведение /1 документа;
    () - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)";
    * - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.;
    # - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема";
    ! - поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель".
    Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И.
    Замечание 1. Написание операторов И (AND), ИЛИ (OR), НЕ (NOT), РЯДОМ (NEAR) допускается только в верхнем регистре.
    Замечание 2. Операторы не используются как унарные (в начале строки поиска). Например, нельзя сделать выбор всех глав, в которых отсутствует указанный текст.
    Ограничение. При использовании нечеткого и группового поиска (операторы "*" и "#") может быть найдено несколько слов. Общее число найденных слов не может превышать 300.
    <РазмерПорции> (необязательный)

    Тип: Число.
    Количество результатов в одной порции. Например, 30.
    Значение по умолчанию: 20.
    Возвращаемое значение:

    Тип: СписокПолнотекстовогоПоиска.

    Описание:

    Создает объект СписокПолнотекстовогоПоиска. После создания необходимо вызвать метод ПерваяЧасть, чтобы получить результаты поиска.

    Доступность:

    Сервер, толстый клиент, внешнее соединение.
    Примечание:

    Если режим полнотекстового поиска запрещен, то использование метода вызывает исключение.

    Получил список, посчитал кол-во элементов = кол-во слов.

  31. У меня нет 1С, есть только postgres + python

  32. [...]. Я сёдня правильно лефт джойн применил. У мну праздник

    Ответы: (32)
  33. Форум - детский сад :)

    Эльниньо [...]. Я сёдня правильно нарисовал ёлочку. У мну праздник

    Огромная разница в уровне развития с юзерами мисты.

  34. Что и требовалось доказать. Уровень развития подсракулетних типо-погромиздов меньше уровня развития рядового западного школьника, решившего стать программистом

    Ответы: (34)
  35. gnu Что и требовалось доказать. Уровень развития подсракулетних типо-погромиздов меньше уровня развития рядового западного школьника, решившего стать программистом

    И что это доказывает?

  36. 1Сники != программисты.

    что тут доказывать

    Ответы: (36)
  37. gnu 1Сники != программисты.

    что тут доказывать

    Это давно было известно, я вот не являюсь не 1Сником ни программистом, просто изучаю SQL для решения собственных локальных задач. Для решения более глубоких задач я обращусь к спецам, но что бы мне по ушам не ездили всякие "спецы" я хочу иметь базовые представления о возможностях и степени сложности их реализации. Знания мне нужны исключительно для этого.

  38. 4 г. назад

    Народ выручайте что-то туплю, сто лет не занимался запросами(( все забыл

    Есть табличка:

    object_id, detail_id, position

    49144, 69204, 50
    49144, 69214, 40
    49144, 69234, 30
    49144, 69604, 20
    49144, 65204, 56
    49145, 49214, 10
    49145, 62234, 30
    49145, 68604, 20
    49145, 64204, 34
    49146, 56876, 0

    мне нужно выдернуть все уникальные object_id и detail_id где position самый большой ?
    Запрос из серии SELECT DISTINCT object_id, MAX(position), detail_id from table GROUP BY object_id HAVING MAX(position)

    выдает не совсем то что надо...

    Ответы: (47) (58)
  39. select object_id, detail_id, max(position) from tab
    group by object_id, detail_id

    Ответы: (39) (41) (43)
  40. ТеньД select object_id, detail_id, max(position) from tab
    group by object_id, detail_id

    Не пашет, все равно выдает все значения... Мне надо
    49144, 65204, 56
    49145, 64204, 34
    49146, 56876, 0

    Ответы: (58) (59)
  41. Маленький нюанс)) в этой тбличке есть еще поле pair_id и оно типа первичный ключ (auto_increment)
    наверное в этом собака ?

    Ответы: (42)
  42. Странно, что выдает запрос в (38)?

    Ответы: (43)
  43. Будущий_Олигарх Маленький нюанс)) в этой тбличке есть еще поле pair_id и оно типа первичный ключ (auto_increment)
    наверное в этом собака ?

    Сомнительно

  44. ТеньД Странно, что выдает запрос в (38)?

    Херню какую-то выдает...

    Снимок1.PNG
    Снимок2.PNG

    Разве detail_id не должен быть 89569 ??

    Ответы: (48) (53)
  45. SELECT object_id, MAX(position), detail_id
    from table
    GROUP BY object_id, detail_id
    HAVING MAX(position)=position

    Ответы: (46)
  46. С группировкой выдает вообще все... [smile=:/]

    Снимок3.PNG

    какой-то бред...

  47. sda553 SELECT object_id, MAX(position), detail_id
    from table
    GROUP BY object_id, detail_id
    HAVING MAX(position)=position

    ругается на position

    Снимок4.PNG

  48. 18.05.2020 12:11:38 отредактировано sda553

    Будущий_Олигарх все уникальные object_id и detail_id где position самый большой ?

    Двояко читается без запятых:
    1. Должны быть уникальны object_id detail_id и для этой уникальной пары вытянуть максимальный position.
    2. Должен быть уникальный object_id к нему присоединить тот detail_id, для которого position максимален.

    Ответы: (49)
  49. (43) Т. е. тебе надо найти max(position) для каждого object_id и соотв. detail_id? Тогда:

    with t as (select object_id, max(position) as position from group by object_id)

    select object_id, detail_id, p.position from tab
    inner join p
    on p.position = tab.position

    Ответы: (50) (53)
  50. sda553 Двояко читается:
    1. Должны быть уникальны object_id detail_id и для этой уникальной пары вытянуть максимальный position.
    2. Должен быть уникальный object_id к нему присоединить тот detail_id, для которого position максимален.

    да пункт 2

    Ответы: (50)
  51. 18.05.2020 12:12:58 отредактировано sda553

    (49) тогда (48) только там синтаксические ошибки, подправишь

  52. Мне надо вытащить detail_id для каждого уникального object_id с максимальным position

  53. 18.05.2020 12:20:02 отредактировано sda553

    Для pl/sql можно проще (меньше кода), но с применением аналитических функций
    Select object_id, detail_id, position
    from tab
    where position = (max(position) over partition by object_id)

  54. ТеньД (43) Т. е. тебе надо найти max(position) для каждого object_id и соотв. detail_id? Тогда:

    with t as (select object_id, max(position) as position from group by object_id)

    select object_id, detail_id, p.position from tab
    inner join p
    on p.position = tab.position

    это типа внутреннее соединение сделать ? Просто какой-то мудренный синтаксис)

  55. Не знаешь cte? Перепиши через подзапрос, результат не поменяется

    Ответы: (55)
  56. ТеньД cte

    Щас узнаем, в чем вопрос!) Спасибо!

  57. не выходит каменный цветок... (

  58. Че не выходит?

    Ответы: (60)
  59. 18.05.2020 19:33:22 отредактировано Фёдор14

    (39)
    Select object_id, detail_id, position
    From table
    Where (object_id, position) in
    (Select
    object_id,
    Max(position)
    from table
    Group by object_id)

  60. Будущий_Олигарх Мне надо
    49144, 65204, 56
    49145, 64204, 34
    49146, 56876, 0

    Держи:

    SELECT object_id, detail_id, max(position) FROM `table`
    GROUP BY object_id
  61. ТеньД Че не выходит?

    Все получилось! Всем большое спасибо.
    В самой базе были еще задвоенные позиции по другим полям, которые очень коварно меня выбивали из колеи.

    Ответы: (61)
  62. Будущий_Олигарх Все получилось! Всем большое спасибо.
    В самой базе были еще задвоенные позиции по другим полям, которые очень коварно меня выбивали из колеи.

    Без проблем, обращайся если что.

или зарегистрируйтесь чтобы ответить!