2016-12-03 6 views
0

Я пытаюсь написать запрос, который показывает 3 разных столбца. Имя класса активности, общий доход и количество клиентов. Мой код ниже показывает эти столбцы (вместе с двумя разными ценами, учащимися и регулярными). То, что я пытаюсь сделать, это написать запрос, который вычисляет доход в зависимости от типа клиента * соответствующего типа клиента (ученика или обычного). Я не могу написать запрос, чтобы отличить 2 разных типа клиентов и соответствующую цену в столбце «доход». Любая помощь приветствуется!Попытка объединить два разных атрибута в один столбец

SELECT ACTIVITY_NAME           AS CLASS, 
     STUDENT_PRICE, 
     REGULAR_PRICE, 
     Count(CUSTOMER.CUSTOMER_TYPE)       AS NUM_CUST, 
     Count(CUSTOMER.CUSTOMER_TYPE) * ACTIVITY.STUDENT_PRICE AS REVENUE 
FROM ACTIVITY 
     JOIN ACTIVITY_BOOKING 
     ON ACTIVITY.ID = ACTIVITY_BOOKING.ACTIVITY_ID 
     JOIN CUSTOMER 
     ON ACTIVITY_BOOKING.CUSTOMER_ID = CUSTOMER.ID 
GROUP BY ACTIVITY_NAME, 
      STUDENT_PRICE, 
      REGULAR_PRICE 
ORDER BY ACTIVITY.ACTIVITY_NAME 
+0

Добро пожаловать в Stack Overflow! Похоже, вы просите о помощи на дому. Хотя у нас нет проблем с самим собой, обратите внимание на эти [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845 # 338845), и соответственно отредактируйте свой вопрос. –

ответ

0

Я думаю, что вам нужно SUM не COUNT и вы можете суммировать условное значение как:

SELECT ACTIVITY_NAME           AS CLASS, 
     STUDENT_PRICE, 
     REGULAR_PRICE, 
     Count(CUSTOMER.CUSTOMER_TYPE)       AS NUM_CUST, 
     Sum (case when CUSTOMER.CUSTOMER_TYPE = 'Student' then STUDENT_PRICE when CUSTOMER.CUSTOMER_TYPE = 'Regular' then REGULAR_PRICE else 0 end) AS REVENUE 
FROM ACTIVITY 
     JOIN ACTIVITY_BOOKING 
     ON ACTIVITY.ID = ACTIVITY_BOOKING.ACTIVITY_ID 
     JOIN CUSTOMER 
     ON ACTIVITY_BOOKING.CUSTOMER_ID = CUSTOMER.ID 
GROUP BY ACTIVITY_NAME, 
      STUDENT_PRICE, 
      REGULAR_PRICE 
ORDER BY ACTIVITY.ACTIVITY_NAME 
+0

Эй, это сработало отлично! Благодаря! Я просто узнаю, как правильно писать заявления «case» и «if-then», поэтому это была огромная помощь! Только проблема, с которой я столкнулась сейчас, - это когда я показываю столбец NUM_CUST, даже если строка показывает 0 (без клиентов), она покажет значение «Регулярная цена» в столбце «Доход». Как показать 0 в Доходе, когда NUM_CUST отображает 0? –

+0

@ D.S. Я отредактировал case-заявление, и теперь он должен показать 0. Я думал, что клиент либо занят, либо регулярно, и не может быть 0. Cheers – Kacper

+0

большое спасибо, я понял это прямо перед тем, как вы прокомментировали. Но твоя чище;). Ты лучший, у тебя отличный. –

Смежные вопросы