2015-06-16 5 views
1

Найти всех сотрудников, чья зарплата ниже средней зарплаты всех сотрудников из таблицы сотрудников. Перечислите их идентификационный номер, фамилию и имя первого лица с зарплатой в порядке возрастания.SQL Server, query

Ошибка:

Error starting at line : 1 in command - SELECT EMPLOYEE_ID,Last_Name, First_Name,Salary FROM Employees HAVING salary<(SELECT avg(salary) FROM Employees) ORDER BY salary Error at Command Line : 2 Column : 8 Error report - SQL Error: ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause: *Action

+2

, где находится ваш код ... –

+0

это ваш вопрос, что назначение вы, как предполагается, решаете сами? – Blip

+0

Похоже, у вас есть работа на дому .. plz поделиться тем, что вы пробовали до сих пор .. – Deepshikha

ответ

0

Попробуйте это:

SELECT EMPLOYEE_ID,LastName, FirstName,Salary FROM tblEmployee 
group by EMPLOYEE_ID,LastName, FirstName,Salary 
HAVING salary<(SELECT avg(salary) 
FROM tblEmployee) ORDER BY salary 
+0

Имея следующую ошибку: Столбец 'tblEmployee.Salary' недопустим в предложении HAVING, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. –

+0

Используйте GROUP BY: SELECT EMPLOYEE_ID, LastName, FirstName, Зарплата FROM tblEmployee group по EMPLOYEE_ID, LastName, FirstName, Зарплата HAVING зарплата <(SELECT avg (зарплата) FROM tblEmployee) ЗАКАЗАТЬ зарплатой –

+0

hey @MikeClark, вы свободны сейчас ? –

0

Вот запрос вы хотите, например, с

DECLARE @myTable TABLE 
(
id int, 
LastName VARCHAR(100), 
FirstName VARCHAR(100), 
Salary bigint 
) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(1,'garg','amit',50000) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(2,'jindal','sumit',60000) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(3,'singla','preeti',40000) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(4,'dehran','priyanka',35000) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(5,'tripathi','rahul',25000) 

insert into @myTable(id,LastName,FirstName,Salary) 
values(6,'mangal','Manish',70000) 


select * from @myTable 
group by id,lastName,FirstName,Salary 
having salary < (select avg(salary) from @myTable) 
order by salary 

ИЛИ Вы также можете написать:

select * from @myTable 
where salary < (select avg(salary) from @myTable) 
order by salary 
1

Создать таблицу:

CREATE TABLE Employee 

(
    ID int,  
    LastName VARCHAR(50),  
    FirstName VARCHAR(50),  
Salary DECIMAL(8,2)  
) 

Заполните таблицу с данными:

insert into Employee Select 1, 'Doe', 'John',500  
insert into Employee Select 2, 'Petrov', 'Ivan',800  
insert into Employee Select 3, 'Brown', 'Michael',700 

Проделайте выберите:

SELECT * 
FROM Employee 
WHERE Salary < (SELECT AVG(Salary) FROM Employee) 
ORDER BY Salary ASC 
0

ВЫБРАТЬ EMPLOYEE_ID, LastName, FirstName, зарплата ОТ tblEmployee ГДЕ жалованье < (SELECT AVG (зарплатный) FROM tblEmployee) ORDER BY зарплаты