こんにちは Teradata を初めて使用し、問題が発生しています
各人に与えられた固有の ID を格納する ID テーブルがあります。
CREATE TABLE IDS(
ID VARCHAR(8),
UPDATED_DATE DATE)
次に、IDS の人口統計情報を格納する主キーを持たない名前と住所のテーブルがあります。
CREATE TABLE NAMES(
ID VARCHAR(8),
NAME VARCHAR(50))
CREATE TABLE ADRRESSES(
ID VARCHAR(8)
ADDRESS VARCHAR(200))
各 ID は複数の名前と IDS を持つことができるようになりました。ただし、名前と住所については、カウントが多いものを使用したいと思います。2 つの名前の COUNT が同じ場合、最初の行だけが必要です
ID名カウント
1234 ジョン・スミス 6
1234 ジョニースミス 6
1234 Jスミス2
上記の例では、John Smith という名前が必要です。ID には名前やアドレスがない場合があるため、実行している左の Join を次に示します。これが私が試していることです
SELECT * FROM
(SELECT ID as V_ID from IDS) a
LEFT JOIN
(SELECT ID, NAME, COUNT(*) AS COUNTER,(RANK() OVER(ORDER BY COUNTER DESC)) AS RNK
FROM NAMES
GROUP BY ID)b
ON a.ID = b.ID
AND b.RNK = 1 -- Should give me only the first row
LEFT JOIN
(SELECT ID, ADDRESS, COUNT(*) AS COUNTER, (RANK() OVER (ORDER BY COUNTER DESC) ) AS RNK
FROM ADDRESSES
GROUP BY ID) c
ON c.ID = a.ID
And c.RNK = 1
しかし、これは私に望ましい結果をもたらしません。RANK の代わりに ROW NUMBER を使用してみましたが、まだ結果はありません。このクエリを TERDATA でどのように記述すればよいですか?