Подзапрос MySQL и оператор соединения

#mysql #sql #mysql-error-1064

#mysql #sql #mysql-ошибка-1064

Вопрос:

Я написал запрос для извлечения пола и имени сотрудников из таблиц e and profile на основе идентификатора сотрудника emp , теперь у меня есть таблица, подобная:

 gender   name
m         qwqw
f         wewe
m         erer
m         rtrt
f         tyty
 

используемый запрос:

 select gender, name from profile inner join e on profile.emp = e.emp
 

Теперь мне нужно написать подзапрос, чтобы создать таблицу для подсчета количества сотрудников определенного пола, например:

 gender  count
m        3
f        2
 

С запросом, который я написал:

 SELECT COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;
 

Я могу печатать:

 count
3
2
 

но не столбец gender. Как я могу использовать соединение и подзапрос для правильного отображения данных по мере необходимости?

Ответ №1:

Вам необходимо включить gender в select . Вы можете агрегировать по столбцам и выражениям, которые не выбраны, хотя это несколько необычно.

В вашем случае вам не нужен подзапрос. Кроме того, я настоятельно рекомендую псевдонимы таблиц:

 select gender, count(*)
from profile p inner join
     e
     on p.emp = e.emp
group by gender;
 

Ответ №2:

Попробуйте этот код, приведенный ниже =>

 SELECT Gender, COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;
 

Ответ №3:

Вы пробовали выбирать gender, COUNT(gender) ? Ваш запрос станет

 SELECT gender, COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;