как классифицировать работодателей по трем столбцам на основе условия?

#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;