Задать вопрос
Ответы пользователя по тегу SQL
  • Как получить непересекающиеся строки между двумя запросами с group by?

    @Brezencat
    Teamlead Data platform
    По сути тебе нужно найти дубли по alias, почему по этой колонке, ты сам отвечаешь в вопросе: «должно быть» и результаты сгруппированных запросов.
    Чтобы в этом убедиться довольно просто в запрос добавить фильтрацию по count(*), например:
    SELECT alias
    , count(*) AS cn
    FROM `site_resources`
    GROUP BY alias
    HAVING count(*) > 2;

    В целом это ответит на вопрос, по каким alias есть записи, которые по уникальным ID не группируются.

    Если же хочется прям посмотреть на эти записи, то:
    SELECT *
    FROM (
    SELECT id
    , alias
    , ROW_NUMBER() OVER (PARTITION BY alias ORDER BY id) AS rn
    FROM `site_resources`
    ) AS t
    WHERE t.rn > 1;
    Ответ написан
    Комментировать
  • Как нормализовать таблицу в справочник?

    @Brezencat
    Teamlead Data platform
    Нормализация, это когда вы к таблице создаёте параллельно справочники. И ваша таблица должна выглядеть ка:
    1; 01; 001; бла-бла-бла
    1; 01; 002; Intel или 0001
    1; 01; 003; 1024
    2; 01; 001; бла-бла-бла
    2; 01; 002; Intel или 0001
    2; 01; 003; 4 Гб
    3; 02; 001; бла-бла-бла
    3; 02; 002; Radeon или 0002
    3; 02; 003; 8 Гб

    А то, что вы указываете в условии получения на выходе будет давать вьюха с джойнами на справочники и таблицу.
    Ответ написан
    Комментировать
  • Как из БД вывести несколько значений из строки?

    @Brezencat
    Teamlead Data platform
    Зачем * , если нужны всего два столбца?
    select CONCAT(country_name, ' ', city_name) as Country_City
    from country
    where city_name like '%%';


    Как вариант:
    select country_name + ' ' + city_name AS Country_City
    from country
    where city_name like '%%';
    Ответ написан
    Комментировать