読者です 読者をやめる 読者になる 読者になる
ブログお引越ししました。
世界の切りとり方
5秒後に移動します…

「最も近い値を持つデータを別のデータセットからマッチングする方法について考える話」をSQLで考える話

最も近い値を持つデータを別のデータセットからマッチングする方法について考える話

この記事を読みまして、直積にはなるけどSQL一発で書けるよな、と思って書いてみました。

proc sql;
create table result as
select 
  T1.ID,
  T1.X,
  T1.ID2,
  T1.Y,
  T1.diff
from (
	select
	  Q1.ID,
	  Q1.X,
	  Q2.ID2,
	  Q2.Y,
	  abs(Q1.X-Q2.Y) as diff
	from Q1 cross join Q2) as T1
group by T1.ID,T1.X
having T1.diff = abs(T1.X-T1.Y)
order by T1.ID,T1.X;

やっぱり書けた。よかった。