読者です 読者をやめる 読者になる 読者になる

crmprogrammer38の日記

プログラマのメモ

【TERADATA】 TERADATAの拡張SQL構文のQUALIFY句は、他のDBでも使えるといいなと思う

TERADATA拡張のQUALIFY句がある。

QUALIFY句を使って、分析関数の値でさらに条件をかけることができる。

 

select productcode , ammount, rank() over(order by ammount desc)
from sample
qualify rank() over(order by ammount desc) <= 100;

 

こんな感じで使える。(他のDBだと、一度分析関数の副問合せの結果にさらに条件を入れると思うが、上記のようにとても綺麗なSQLで書けるのはうれしい。

 

ただ、分析関数自体が、煩わしいのもあってあまり使われて無いように感じるけどね。(sum関数のover句内でorder by した際には、 rows between unbounded preceding   and current row がデフォルトで指定される とかね。。最初のとっつきづらさが良くないと思う)