人気ブログランキング |


タグ:SQL ( 2 ) タグの人気記事

PostgreSQL 11 on Windows

遅ればせながら PostgreSQL 11 をWindows 10にインストール。

目玉としてレプリケーション機能が取り上げられているように思ってたが、ウインドウ関数のオフセットにRANGE指定できるとのこと。

これは試してみたい。

一方でPostgreSQL 10で動いていたplpython3uが動作しない模様。
文字列操作などでPythonが便利だったので、ちょっと惜しい。
ここは少し様子見。

by nora1962 | 2019-03-16 00:37

MySQLでグループごとのランキング(最大値からN件取得)

create table xxx
(
nen int,
gaku int
);

insert into xxx values ( 2011,600 );;
insert into xxx values ( 2011,500 );
insert into xxx values ( 2011,450 );
insert into xxx values ( 2011,750 );
insert into xxx values ( 2010,450 );
insert into xxx values ( 2010,540 );
insert into xxx values ( 2010,350 );
insert into xxx values ( 2010,800 );
insert into xxx values ( 2010,700 );

select t.nen, t.gaku
from ( select
@rnk:=if(@prevnen <=> x.nen, if( @prevaku <=> x.gaku, @rnk, @rnk+1), 1 ) as rnk,
@prevnen := x.nen nen,
@prevgaku := x.gaku gaku
from ( select * from xxx order by nen, gaku desc ) as x
cross join ( select @prevnen:=0, @prevgaku:=0, @rnk:=0 ) as dummy ) t
where t.rnk <= 3;

これが結構速い。
ユーザー変数はMySQLの独自機能だし、項目値にnullがある場合はもう一捻りしなければいけないが。
注意点はユーザ変数への代入順序。
今回の場合は@rnkを最初に持ってこないと@prevnen、@pervgakuが上書きされてしまう。
by nora1962 | 2011-03-21 11:32 | PC