• Можно ли такое реализовать с помощью MySQL?

    @Akina
    Но это, как написали, денормализованный.

    Ну и неправильно написали. Нет там ничего денормализованного. Обычная себе разреженная таблица.
    Написано
  • Почему не получаются значения NEW в триггере BEFORE UPDATE?

    @Akina
    Andrey, Вы прочитали материалы по ссылке в постскриптуме?

    Не надо рассказывать, как вы пытаетесь решить задачу - расскажите саму задачу. Конкретно и предметно. Пока, судя по описанию, вы используете какой-то сторонний ЯП с каким-то сторонним фреймворком, который даже не подозревает о существовании триггеров и неспособен их работу правильно учитывать. Вы же упорно намерены триггеры в эту систему втащить, и по итогу боретесь с системными косяками своего инструмента. А сова не натягивается...
    Написано
  • Почему не получаются значения NEW в триггере BEFORE UPDATE?

    @Akina
    Вы можете создать максимально упрощённую, но при этом адекватную, модель? CREATE TABLE для трёх связанных таблиц (только нужные для вопроса поля, только PK/FK, всё лишнее поудалять), INSERT INTO, вставляющий в них по 3-5 связанных записей, затем обсуждаемый UPDATE в одну таблицу, описание того, что должно при этом измениться в остальных двух таблицах (и подробно - почему именно так), плюс требуемое финальное состояние данных в каждой из трёх таблиц.

    идея в том что при UPDATE я беру данные из данного UPDATE и вношу их INSERT INTO в другие таблицы чтобы на выходе у пользователя уже подтянулись сгенереные данные. А не закрывать и открывать снова "окошко".

    Не понял.. вроде раньше было сказано:
    чтобы когда пользователь нажал "создать объект" в этом ПО - ему сразу вываливался на экране этот созданный объект с уже вставленными данными этим тригером.

    Судя по тому, что ты описываешь - твоё ПО то ли вообще не знает о существовании двух дополнительных таблиц, то ли никак их не связывает с создаваемым объектом. Но раз так - то изменения в тех двух таблицах вообще не должны менять поведения этого ПО.
    Ну и непонятно, как ты собираешься создавать НОВЫЙ объект запросом UPDATE.
    Написано
  • Почему не получаются значения NEW в триггере BEFORE UPDATE?

    @Akina
    триггер, который перед UPDATE таблицы вносит данные в другие таблицы.

    Глупо. Лучше сперва убедиться, что вставка прошла нормально, и только потом изменять другие таблицы - тогда при проблемах не придётся откатываться.

    Исключение - если на эти самые добавленные в другие таблице записи должна ссылаться вставляемая запись. Но тогда это свидетельствует о грубых косяках в схеме данных.
    Написано
  • Как исключить при join повторение множества для другого множества?

    @Akina
    Есть 2 таблицы

    Дайте их в виде проверенно рабочих CREATE TABLE + INSERT INTO.

    PS. Задача-то в общем плёвая. UNNEST второй таблицы. Нумерация в группе по буковке в обеих таблицах. LEFT JOIN. Обратная агрегация.
    Написано
  • Как лучше хранить и быстро искать связанные данные?

    @Akina
    Таблица групп.
    Таблица терминов.
    Таблица, связывающая термин и группу, с полями даты начала и конца валидности связи. Для актуальной связи конец - в далёком будущем.
    А, собственно, всё.
    Разве что ещё мелочь - при расщеплении группы в новую группу выделяется меньшая подгруппа терминов, а если равно - то любая.
    Написано
  • Как гарантировать последовательную запись данных без пропусков id?

    @Akina
    MishaXXL, да в триггере. Получаем текущее максимальное значение, прибавляем единицу, записываем. Чтобы гарантировать уникальность - создаём по этому полю уникальный индекс. Поскольку при конкурентных процессах можем получить дублирование, срабатывание ограничения уникальности и соответственно ошибку при вставке - предусматриваем и обрабатываем эту ситуацию на клиенте.
    В случае именно Постгресса можно попробовать задействовать дополнительный генератор, который не привязан к таблице и, соответственно, не будет плодить дыр из-за пред-резервирования... но всё равно при ошибке вставки значения будут теряться.
    Написано
  • Как гарантировать последовательную запись данных без пропусков id?

    @Akina
    Виктор Кожухарь, это ожидаемо. Любой мультикомбайн, выполняя кучу функций, любую из них выполняет плохо (ну если повезёт - то любую кроме основной). То же и с автоинкрементом - уникальность он обеспечивает хорошо, а всё остальное - оторви и выбрось.
    Написано
  • Какой проект можно сделать на PL/pgSQL новичку?

    @Akina
    Есть две категории случаев, где следует использовать хранимые процедуры:

    PL/pgSQL используется (обычно) для создания хранимых объектов. Их много (ну хорошо, несколько) типов, и процедуры среди них всего лишь в топе, а если вдруг и лидеры, то явно не безоговорочные. Пользовательские функции и триггеры ничуть не менее популярны.
    Написано
  • Какой проект можно сделать на PL/pgSQL новичку?

    @Akina
    pavel_the_man, простейший пример - ни одна учётная запись в принципе не имеет прямого доступа к данным. Только и исключительно через хранимые процедуры. Очень полезно с точки зрения безопасности, кстати.
    Написано
  • Ввод данных от нескольких источников в Excel c помощью VBA?

    @Akina
    чтобы данные введенные одной упаковщицей не перемешивались с данными другой упаковщицы

    Excel - это не база данных, нормализация ему и не ведома, и не нужна.
    Каждый файл либо каждый интерфейс - на отдельный лист.

    оператору, который выводил время появившейся ячейки, например: отсканировал->в соседней колонке зафиксировалось время скана

    Private Sub Worksheet_Change(ByVal Target As Range)
    Написано
  • Как сделать sql запрос для показа топ 10 ключевых слов с группировкой и суммой метрик из другой таблицы?

    @Akina
    one2four,
    только те которые были отфильтрованы и сгруппированы

    Наоборот - сначала группировка, потом фильтрация (вернее, лимитирование). А это совсем другое дело. После этого остаётся или один git, или ни одного. А потом к нему зарплаты - соответственно тоже либо все, либо ни одной, т.е. зарплаты не фильтруются.
    Написано
  • Как сделать sql запрос для показа топ 10 ключевых слов с группировкой и суммой метрик из другой таблицы?

    @Akina
    one2four,
    похоже это то, что нужно

    Вряд ли. В последнем запросе нет лимитирования. Я тупо так и не понял, что собсно нужно лимитировать...
    Написано
  • Как сделать sql запрос для показа топ 10 ключевых слов с группировкой и суммой метрик из другой таблицы?

    @Akina
    я делаю выборку топ 10 ключевых слов с профессией backend-developer, так

    Неправильно. Запрос недетерминированный. Если записи с номерами 10 и 11 при указанной сортировке имеют одинаковое значение в выражении сортировки, то будет выведена случайная из них. И не факт, что та же, что и при предыдущем выполнении того же запроса.
    Следует расширить выражение сортировки и обеспечить детерминированность результата.
    Написано
  • Как сделать sql запрос для показа топ 10 ключевых слов с группировкой и суммой метрик из другой таблицы?

    @Akina
    1. Выбрать из таблицы `keywords` слова, с профессией "backend developer", и, просуммировав rating, определить топ 10 слов.
    2. Выбрать из таблицы `salaries` зарплаты тех ключевых слов, которые участвовали в группировке в первом запросе.

    Смотрим условие 1. Оно группирует по keyword - то есть ключевое слово либо вошло в ограниченную выборку, либо нет.
    Смотрим условие 2 с учётом вышесказанного. Получается, что либо для ключевого слова будут выданы все записи с зарплатами, либо ни одной.
    Теперь смотрим сюда:


    +----+-----------+--------+-----------+
    | id | keywordId | salary | sum(freq) |
    +----+-----------+--------+-----------+
    | 7 | 3 | 100000 | 6 |
    | 11 | 4 | 125000 | 5 |
    | 8 | 3 | 150000 | 9 |
    | 9 | 3 | 170000 | 4 |
    +----+-----------+--------+-----------+

    Ключевому слову 'git' для профессии 'backend developer' всего соответствует 6 записей в таблице salaries.
    Однако в требуемый результат попали только 4 из них, записи с salsries.id IN (10, 12) отсутствуют. Вопрос №1 - почему?

    Вопрос № 2 - как получены значения в поле sum(freq). Как-то на первый взгляд не все из них соответствуют исходным данным.

    Совокупно по обоим вопросам. Если выполнено суммирование freq с группировкой по salary, то по какому принципу выбраны значения для полей id и keywordId?

    PS.
    Написано
  • Как сделать sql запрос для показа топ 10 ключевых слов с группировкой и суммой метрик из другой таблицы?

    @Akina
    имеются 2 таблицы

    • Проверьте приведённые SQL-скрипты с примером данных на работоспособность в MySQL, и приведите их в порядок - количество ошибок просто зашкаливает.
    • Явно укажите значения для ВСЕХ полей, включая и автоинкрементное.
    • Во второй таблице должны быть связанные записи для всех или хотя бы большинства записей из первой таблицы.


    итоговый результат

    Итоговый результат должен быть в формате вывода MySQL CLI.
    • Отформатируйте его как таблицу, чтобы было видно, где для какого поля значение (шапка с именами полей обязательна), и понятно, какой оно имеет тип данных.
    • Уберите многоточия - показанный результат должен полностью соответствовать показанным исходным данным.
    • Для одной из записей (лучше - для первой) - дайте подробные пояснения о том, как получено каждое из значений.


    Цель 1 вывести топ 10 ключевых слов для этого делаем запрос

    Этот запрос достигает поставленной цели № 1? если да - то зачем он вообще нужен в вопросе?
    Написано
  • Можно ли в mysql хранить 200 колонок, для 10+млн записей?

    @Akina
    one2four,
    правильный запрос будет содержать вложенный select с перебором десятков тысяч строк

    Это зачем, спрашивается? Как-то описание задачи ну совсем не тянет на подзапросы.

    Вы бы показали пример данных - CREATE TABLE, оставить только 3-4 поля с метриками, INSERT INTO, с десяток записей, и значения только для оставленных метрик, требуемый результат для этих данных, ну и пояснения, как и почему посчитаны те или иные итоги.
    Написано
  • Можно ли в mysql хранить 200 колонок, для 10+млн записей?

    @Akina
    one2four
    пока другого решения не нашел.

    Вроде очевидная структура-то:

    - идентификатор объекта
    - идентификатор метрики
    - значение метрики

    Таблица
    name | rating | siteId | region | + 4 фильтра

    Как это соотносится со структурой, показанной в вопросе?

    если делать отдельную таблицу для метрик и делать джоин, то `rating` увеличивается в зависимости от строк правой таблицы, отчего топ будет неправильный

    Неправильный запрос даёт неправильный результат - что тут странного? составьте правильный запрос.
    Написано
  • Можно ли в mysql хранить 200 колонок, для 10+млн записей?

    @Akina
    их нужно хранить хранить в ненормальной форме

    Чем обоснована такая странная "хотелка"?
    Написано