Запросы на основе столбцов? - PullRequest
0 голосов
/ 28 мая 2019

Здесь новичок с SQL - скажем, у меня есть таблица получателей, и я пытаюсь составить запрос и отсортировать результаты по этническому происхождению. Обычно я бы сделал

select abcd
from recipient 
where ehthnicity = 'White' 

но в этой таблице этнические группы указаны как поля (атрибуты) - это плохой дизайн?

Как лучше всего это сделать?

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Бюро переписей США имеет очень четкие определения этнической и расовой принадлежности ( здесь - хорошее резюме).

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

Почему в этом случае подходят отдельные столбцы?Потому что столбцы четко определены.Потому что их несколько.И потому что они не сильно меняются со временем.Является ли таблица ассоциации / соединения также хорошим решением.Да.

Что я не рекомендую, так это список строк.Например, Тайгер Вудс может иметь «белый, черный, индийский, азиатский», и это сложно анализировать и подвержено ошибкам (черт возьми, «белый, черный» такой же, как «черный, белый»?).

0 голосов
/ 28 мая 2019
  1. Да, обычно это плохой дизайн. Причины различаются в зависимости от деталей.

  2. Эта структура данных называется сводной, поэтому вам нужно искать способы выполнения сводных запросов, если вы застряли в такой таблице и не можете изменить ее структуру.

    Пример: https://databricks.com/blog/2018/11/01/sql-pivot-converting-rows-to-columns.html

    Oracle поддерживает пункты PIVOT , удачный для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...