2
SELECT DISTINCT( m.pm_name ) 
FROM   prime_minister AS m, 
       prime_minister AS p 
WHERE  m.state_born IS NOT NULL 
GROUP  BY m.pm_name, 
          m.birth_yr 
HAVING m.birth_yr = (SELECT Min(p.birth_yr) 
                     FROM   prime_minister) 

私の問題は次のとおりです。

クエリは、オーストラリアの州で生まれた最初の首相を生成することになっています...したがって、WHERE m.state_born IS NOT NULL

4

5 に答える 5

1

サブクエリで外部テーブルを参照するのはなぜですか? このような単純なサブクエリを作成します。

SELECT DISTINCT pm_name 
FROM prime_minister 
WHERE state_born IS NOT NULL 
AND birth_yr = (SELECT MIN(birth_yr) FROM prime_minister)
于 2013-03-21T10:47:43.660 に答える
0

これは機能しますか?

SELECT TOP 1 pm_name, MIN(birth_yr)
FROM   prime_minister
WHERE  birth_yr IS NOT NULL 
GROUP BY pm_name
ORDER BY pm_name, MIN(birth_yr)
于 2013-03-21T10:54:36.193 に答える
0

EXISTS() 演算子でオプションを試す

SELECT m.pm_name
FROM prime_minister AS m     
WHERE EXISTS (
              SELECT 1
              FROM prime_minister p
              WHERE p.state_born IS NOT NULL
              HAVING MIN(p.birth_yr) = m.birth_yr
              ) AND m.state_born IS NOT NULL
于 2013-03-21T12:22:06.720 に答える
0

あなたの質問を完全に理解しているかどうかわかりません。group byしかし、またはの理由がまったくわかりませんhaving

SELECT m.pm_name
FROM   prime_minister
WHERE  m.state_born IS NOT NULL 
AND    m.birth_yr = (SELECT Min(p.birth_yr) 
                     FROM   prime_minister p
                     WHERE  p.state_born IS NOT NULL) 
于 2013-03-21T10:52:42.853 に答える
0

各州で生まれた最初の首相を見つけようとしていると思います。

select pm_name, state_born from prime_minister m
inner join 
(
    select min(birth_yr) birth_yr, state_born
    from prime_minister
    where state_born is not null
    group by state_born
)
t
on m.state_born = t.state_born and m.birth_yr = t.birth_yr
于 2013-03-21T11:07:53.477 に答える