2017-02-06 3 views
-3

2つのテーブル。 1つは従業員ID、名前、指定を含みます。 2番目のテーブルにはID、月、給与が含まれています。従業員の月給と月給の両方を取得する方法

従業員の指定で、月間最大の給与を出力する必要があります。

+0

既に試しましたか?私は結果を得ていませんでした。[Ask to ask](http://stackoverflow.com/help/how-to-ask) – yeputons

答えて

0

これを試してください: -

SELECT x1.month,e1.name,e1.designation,x1.salary FROM employee e1 JOIN (SELECT max(salary) 
as salary,month,name,employeeid FROM salary GROUP BY employeeid)x1 
ON x1.salary = e1.salary AND e1.id = x1.employeeid 
+0

あなたは従業員、名前、指定と従業員、月、給与と別のテーブルと1つのテーブルを持っている –

+0

私は説明することができます –

+0

どのようなエラーがあなたを得るのですか? – denny

0

を以下のようにテーブルを考慮すると、

mysql> select * from T1; 
+----+------+-------------+ 
| id | name | Designation | 
+----+------+-------------+ 
| 1 | a | man   | 
| 2 | b | assis  | 
| 3 | c | serv  | 
+----+------+-------------+ 

mysql> select * from T2; 
+----+-------+--------+ 
| id | month | salary | 
+----+-------+--------+ 
| 1 | jan | 3000 | 
| 2 | jan | 2000 | 
| 3 | jan | 1000 | 
| 1 | Feb | 4000 | 
| 2 | Feb | 3000 | 
| 3 | Feb | 2000 | 
+----+-------+--------+ 

あなたの要件: "月と名前の最大の給与、従業員の指定"

クエリを取得する:

select name,Designation,max(salary) from T1 join T2 using (id)   
group by name; 

の検索結果を:

+------+-------------+-------------+ 
| name | Designation | max(salary) | 
+------+-------------+-------------+ 
| a | man   |  4000 | 
| b | assis  |  3000 | 
| c | serv  |  2000 | 
+------+-------------+-------------+ 

あなたは毎月のために各従業員の最大給与をしたい場合:

問合せ:

select name,Designation,month,max(salary) from T1 join T2 using (id)  
group by name,month; 

結果:このことができます

+------+-------------+-------+-------------+ 
| name | Designation | month | max(salary) | 
+------+-------------+-------+-------------+ 
| a | man   | Feb |  4000 | 
| a | man   | jan |  3000 | 
| b | assis  | Feb |  3000 | 
| b | assis  | jan |  2000 | 
| c | serv  | Feb |  2000 | 
| c | serv  | jan |  1000 | 
+------+-------------+-------+-------------+ 

希望!!

関連する問題