Задавайте вопросы, мы ответим
Вы не зашли.
Написал запрос:
select depno, step, count(step) as qty
from emp
group by depno, step
order by depno, step;
В результате получил:
Название кафедры - Должность - Количество
Кафедра 1 профессор 2
Кафедра 1 доцент 3
Кафедра 2 профессор 4
Кафедра 2 доцент 8
Кафедра 3 доцент 3
А очень хотелось бы вот так:
Название кафедры - Профессоров - Доцентов
Кафедра 1 2 3
Кафедра 2 4 8
Кафедра 3 0 3
Помогите!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Неактивен
1. group by автоматически подразумевает order by.
2. SELECT depno, SUM(IF(step = 'доцент', 1, 0)), SUM (IF(step='профессор', 1, 0)) FROM emp GROUP BY 1;
Неактивен
Спасибо большое!
А можно ли получить тот же результат написав такой подзапрос:
select depno (select count(*) from emp where step = 'профессор') 'профессоров'
(select count(*) from emp where = 'доцентов') 'доцентов'
from emp;
Неактивен
Честно говоря, не понял, в чем вопрос. Если в том, как поименовать колонки, то - да, можно.
SELECT depno AS Department, SUM(IF(step = 'доцент', 1, 0)) AS Docentis, SUM (IF(step='профессор', 1, 0)) AS Professors FROM emp GROUP BY 1;
Обозначать колонки можно и по-русски, но могут быть дополнительные сложности с кодировками.
Неактивен
Вопрос в том, можно ли решить проблему описанную в первом посте с помощью коррелированного подзапроса?
Неактивен
Насколько верен будет такой запрос:
select a.depno, a.qty as 'профессор', b.depno, b.qty as 'доцент'
from
(select depno, count(*) as qty from emp where step='профессор' group by depno) as a,
(select depno, count(*) as qty from emp where step='доцент' group by depno) as b
where a.depno=b.depno
order by a.depno
Неактивен
Предыдущий Ваш вариант был лучше. В этом варианте будут проблемы, если, например, нет ни
одного доцента, но есть профессоры.
А почему нужен именно подзапрос?
Неактивен