#sql #case
#sql #case
Вопрос:
У меня есть таблица student.
Student_Name Ethnicity1 Ethnicity2
============ ========== ===========
A Asian NZ European
B Indian Asian
C NZ European
Я хочу написать инструкцию SQL, в которой я хочу сгруппировать их только по двум этническим группам — азиатская / неазиатская. Я не хочу использовать предложение where .
Итак, у меня 700 студентов, и я хочу увидеть третий столбец, где, если первая этническая принадлежность студента или вторая этническая принадлежность азиата, тогда в третьем столбце должно быть указано «Азиат». что-то вроде этого
Student_Name Ethnicity1 Ethnicity2 Ethnicity
=========== ========== ========== ========
A Asian NZ European Asian
B Indian Asian Asian
C NZ European Non-Asian
Кто-нибудь может помочь, пожалуйста?
Комментарии:
1. Вы можете попробовать это
SELECT Student_Name,Ethnicity1,Ethnicity2, CASE WHEN Ethnicity1='Asian' OR Ethnicity2='Asian' then 'Asian' ELSE 'Non-Asian' as Asian_nonAsian FROM table;
2. Нам нужно просмотреть список всех этнических групп, а также указать, считать ли каждую из них азиатской или неазиатской.
Ответ №1:
Основываясь на вашей логике, которую вы указываете:
select t.*,
(case when 'Asian' in (ethnicity1, ethnicity2) then 'Asian'
else 'Non-Asian'
end) as simplified_ethnicity
Ответ №2:
Это довольно простое заявление о случае, как бы то ни было, если бы я понял, что запрос вашего вопроса может быть
Select T.*, Case When T.Ethnicty1 In ('Asian', 'India') or T.Ethnicty2 In ('Asian', 'India') Then 'Asian' Else 'Non-Asian' End EthnicCity From Students T
Комментарии:
1. За исключением того, что было бы лучше сохранить все этнические группы и классификацию азиатских / неазиатских народов в отдельной таблице.
2. конечно, это зависит от того, насколько хороши структуры данных, я не мог понять, нужно ли иметь столбцы для той же цели, а скорее обсуждать структуру, решение было простым
3.
c
В псевдониме, используемом для вашегоCASE
оператора, есть лишний