2013-12-10 163 views
0

我已經結束了一個奇怪的問題。我無法找出問題的根源。請幫忙。最低薪水的員工sql服務器 - 不能使用MIN功能

,請通過下面的腳本

CREATE TABLE Employee_salary (ID INT,emp_name VARCHAR(50),Salary INT) 

INSERT INTO Employee_salary VALUES(1,'Dolu',15000) 
INSERT INTO Employee_salary VALUES(2,'Bolu',15000) 
INSERT INTO Employee_salary VALUES(3,'Kalia',10000) 
INSERT INTO Employee_salary VALUES(4,'Bheem',50000) 
INSERT INTO Employee_salary VALUES(5,'Krishna',40000) 
INSERT INTO Employee_salary VALUES(6,'Chutki',30000) 

SELECT * FROM Employee_salary 

ID emp_name Salary 
1 Dolu  15000 
2 Bolu  15000 
3 Kalia  10000 
4 Bheem  50000 
5 Krishna  40000 
6 Chutki  30000 

我想最高的受薪員工執行創建一個表,所以我發現bwlow查詢

SELECT Top 1 emp_name,MAX(salary) from Employee_salary Group by emp_name 

我試圖找到最低的工薪階層,並試圖通過下面的查詢執行將'MAX'改爲'MIN'。令人驚訝的是,下面的查詢不能以任何方式工作。它仍然顯示'Bheem,50000'這是一個錯誤的答案。任何人都可以告訴我這個問題的原因或原因。

SELECT Top 1 emp_name,MIN(salary) from Employee_salary Group by emp_name 
+0

你得到相同的記錄。因此,Bheem用戶在表中是單個條目,因此對於bheem用戶最低或最高薪水相同。是否有意義? –

回答

4

請嘗試以下查詢從最低工資:

SELECT Top 1 emp_name, salary from Employee_salary order by salary 

SELECT Top 1 emp_name, salary from Employee_salary order by salary desc 

的最高薪水。

如果有一個以上的員工具有同樣的薪水,請嘗試:

SELECT Top 1 WITH TIES emp_name, salary from Employee_salary order by salary desc 
+0

這不起作用。如果有兩個最低工資的人(比如說10000)呢?它將只檢索一個。 – SpiderCode

+1

@Mosty Mostacho ...感謝您的編輯!這是我的知識。 – TechDo

+1

+1:這是一個很好的解決方案:) – SpiderCode

-1

最高工薪階層

SELECT MAX(salary) from Employee_salary 

這將顯示如果你想看到員工

的薪水最高員工詳細信息

SELECT MAX(salary), Employee_salary.* from Employee_salary 

如果您需要最低工資,那麼你需要添加MIN() insted的的MAX()

+0

嗯,不...這不會返回一個'員工',而是一個'工資' –

+0

好吧,如果你需要僱員,然後添加「Employee_salary。*「並添加限制0,1最後 –

+1

'LIMIT'是MySQL語法,而不是MS SQL Server。 – Dai

1

試圖查詢以下最低和最高工資的記錄。

-- For Max 
SELECT emp_name, salary from Employee_salary where salary = (SELECT Max(salary) from Employee_salary) 

-- For Min 
SELECT emp_name, salary from Employee_salary where salary = (SELECT Min(salary) from Employee_salary) 
+0

感謝朋友的回答。我得到了其他幾種方法來獲得答案,但我很想知道爲什麼下面的查詢不起作用。SELECTEL Employee_1,Employee(Employee) emp_name – Shiva

+0

首先嚐試了「emp_name_name,MIN(salary)from Employee_salary Group by emp_name」這個查詢,查看這個查詢返回最低工資,通過emp_name分組,所以每個用戶在我們的例子中都有單個值,所以min和Max的值對於那個用戶是一樣的 –

0

可能存在多個行的最大工資和最低工資。 所以,當你面對的最小值和最大值的工資與EMP_NAME,原因是其將採取與EMP_NAME組第一條記錄下面的查詢就可以實現這個

select s1.emp_name, s1.Salary from Employee_salary as s1 where not exists(select * from Employee_salary as s2 where s2.Salary > s1.Salary); 

select s1.emp_name, s1.Salary from Employee_salary as s1 where not exists(select * from Employee_salary as s2 where s2.Salary < s1.Salary);