2017-08-12 17 views
0

私のデータセットについては、少なくとも2つの異なる年齢を持つ国では年齢の範囲を要約できるような結果を作成します。各国で少なくとも2つの異なる年齢の人がいる年齢範囲の計算

CREATE TABLE Employees(
    ID int (3) NOT NULL, 
    Name varchar (50) NOT NULL, 
    Age int (3) NOT NULL, 
    Nationality varchar (50) NOT NULL 
); 


INSERT INTO Employees 
    (ID, Name, Age, Nationality) 
VALUES 
    (1, 'CHIN YEN', '19', 'China'), 
    (2, 'MIKE PEARL', '21', 'United Kingdom'), 
    (3, 'GREEN FIELD', '45', 'Nethernalnds'), 
    (4, 'DEWANE PAUL', '57', 'Canada'), 
    (5, 'MATTS', '32', 'Australia'), 
    (6, 'PLANK OTO', '51', 'France'), 
    (7, 'Manish Kumar', '42', 'India'), 
    (8, 'Matts', '55', 'USA'), 
    (9, 'Mahesh Kumar', '32', 'USA'), 
    (10, 'Chin Yen', '21', 'Japan'); 

そして、私は何をしようとしていたことである。

SELECT Nationality, 
     Max(Age) - Min(Age) AS Age_Range 
FROM Employees; 
+0

できません本当に店の年齢、右? – Strawberry

答えて

1

異なるゼロ以外の年齢を持つ少なくとも2人の個人が存在する国のみの年齢範囲を返すクエリを作成するには、次の方法があります。んで何

SELECT Nationality, 
     Max(Age) - Min(NULLIF(Age,0)) AS Age_Range 
FROM Employees 
GROUP BY Nationality 
having Max(Age) - Min(NULLIF(Age,0)) > 0 

その後、集約関数MINによって無視されNULLにその年齢を変換nullif、任意の個々のためage=0を持っていることです。

以下のように共有したデータを変更しました。

INSERT INTO Employees 
    (ID, Name, Age, Nationality) 
VALUES 
    (1, 'CHIN YEN', 0, 'United Kingdom'), 
    (2, 'MIKE PEARL', 21, 'United Kingdom'), 
    (3, 'GREEN FIELD', 45, 'Nethernalnds'), 
    (4, 'DEWANE PAUL', 57, 'Nethernalnds'), 
    (5, 'MATTS', 0, 'Nethernalnds'), 
    (6, 'PLANK OTO', 51, 'France'), 
    (7, 'Manish Kumar', 42, 'India'), 
    (8, 'Matts', 55, 'USA'), 
    (9, 'Mahesh Kumar', 32, 'USA'), 
    (10, 'Chin Yen', 21, 'Japan'); 

以下は、私が共有したクエリを使用した場合の結果です。

enter image description here

あなたはDEMO確認することができhere

2

私はあなただけgroup byが必要だと思う:

SELECT Nationality, 
     Max(Age) - Min(Age) AS Age_Range 
FROM Employees 
GROUP BY Nationality; 

あなたはHAVING Age_Range > 0を追加したい場合があります。

+0

はい私はグループを忘れてしまった。ありがとう.. –

+0

なぜ私は 'Age_Range> 0を持っているのか 'をどうして使うべきか疑問に思っています。国籍には少なくとも年齢の異なる2人以上の人がいるかどうかを確認するための質問はできませんか? –

+0

年齢範囲0は、1つのレコードのみと同じではありません。同じ年齢の2つのレコードを持つことができますが、少なくとも2つの異なる年齢のレコードが必要です。これが* * *ケースでない場合は、 '' count(*)> 1) ' – symcbean

関連する問題