#sql #conditional #conditional-statements
#sql #условные операторы
Вопрос:
Я хочу классифицировать работодателей, которые выбрали трек, по трем разным столбцам, как показано ниже, на основе условия no. количество дней, которые они потратили на прохождение курсов, с использованием столбца DB lrn_complt
указывает на нет. количество затраченных дней :
нет emp, который завершил отслеживание в
0-30days 30-60days 60-90days
1st column 2nd column 3rd column
Для этого нужен Sql или, если вы можете сказать, что логика тоже может помочь???
Комментарии:
1. какую базу данных вы используете?
2. nexus teratom и это работает с sql
Ответ №1:
Вам нужно опубликовать инструкции create table и insert, чтобы все могли правильно понять вашу проблему. Ваша входная таблица, данные и ожидаемый результат и ваша целевая СУБД, по крайней мере.
http://tkyte.blogspot.com/2005/06/how-to-ask-questions.html
Предполагая, что у вас есть два столбца, подобных этому…
Вы можете попробовать встроенные запросы, подобные приведенным ниже…
Select id,
(select count(*) from courses where days between 0 and 30) 0_to_30_days,
(select count(*) from courses where days between 31 and 60) 0_to_30_days
(select count(*) from courses where days between 61 and 90) 0_to_30_days
from courses;
Ответ №2:
В принципе, вам нужно создать 3 подзапроса внутри одного основного запроса:
SELECT
(SELECT COUNT(*) FROM EMPLOYER WHERE LRN_COMPLT BETWEEN 0 AND 30) AS COLUMN1,
(SELECT COUNT(*) FROM EMPLOYER WHERE LRN_COMPLT BETWEEN 31 AND 60) AS COLUMN2,
(SELECT COUNT(*) FROM EMPLOYER WHERE LRN_COMPLT BETWEEN 61 AND 90) AS COLUMN3
FROM DUAL
Ответ №3:
Похоже, вам нужен PIVOT
.
Select id,
COUNT(CASE WHEN lrn_complt between 0 and 30 THEN 1 END) Group1,
COUNT(CASE WHEN lrn_complt between 31 and 60 THEN 1 END) Group2,
COUNT(CASE WHEN lrn_complt between 61 and 90 THEN 1 END) Group3
from courses;