Целью этого запроса является найти среднее число сотрудников для каждой компании в моей базе данных. Вот то, что я в настоящее время для моего запроса, вместе с моим результатом:SQL-запрос, чтобы найти среднее число сотрудников для каждой компании в базе данных
create view Totals as
((select distinct count(company_name) as TotalCompanies, company_name
from company
group by company_name)
union
(select distinct count(Lastname) as TotalEmps, company_name
from Works
group by company_name));
select avg(TotalCompanies) from Totals;
--RESULT:
AVG(TOTALCOMPANIES)
2.777777777778
В то время как я получил результат (так что я не думаю, что есть какая-либо ошибка синтаксиса), на основе фактических данных я введенному в мои таблицы, я не верю, что это значение верно.
Является ли то, что я делаю, по моему мнению, создание, даже доставляющее меня в подходящую точку, где я могу просто назвать среднюю функцию поля TotalCompanies этого вида? Мое намерение состояло в том, чтобы подсчитать всех сотрудников по имени компании в представлении, а затем в среднем эти значения ...
Для FYI я использую SQL для Oracle 11g R2, и вот моя первоначальная схема Я создаю запросы для:
create table Employee(
Lastname varchar(10),
FirstName varchar(10),
MidInitial char(1),
gender char(1),
street varchar(10),
city varchar(10),
primary key(Lastname, FirstName, MidInitial));
create table company(
company_name varchar(20),
city varchar(10),
primary key(company_name));
create table Works(
Lastname varchar(10),
FirstName varchar(10),
MidInitial char(1),
company_name varchar(20),
salary numeric(8,2),
primary key(Lastname, FirstName, MidInitial, company_name),
foreign key(Lastname, FirstName, MidInitial) references Employee,
foreign key(company_name) references company);
Спасибо за помощь!
Я хотел бы также отметить, что ваша схема оставляет место для улучшения. Вам нужно ввести первичные и внешние ключи. Тогда вам не придется повторять полное имя сотрудника и название компании в «Works». Поскольку могут быть люди и компании с одинаковыми именами, ваши ключи не гарантируются ** уникальными **. –