Google Cloud Platformは使ったことがないのですが、
OracleやSQL Serverなどでも、
group byのキーに指定してない列はselect句で指定することができませんでした。
Google Cloud Platformも、エラーメッセージに出力されている通り同じなのだと思います。
Window関数などを使ってみると良いかもしれません。
(以下、sqlite3で試した結果ですが、Google Cloud PlatformでWindow関数が使えなかったり、書き方が違ったりするかもしれません・・雰囲気だけ見てください・・)
sql
1create table medical (
2 ID integer,
3 part text,
4 a integer,
5 primary key (ID)
6);
7
8insert into medical values (01, '病名A', 11);
9insert into medical values (02, '病名A', 12);
10insert into medical values (03, '病名A', 13);
11insert into medical values (04, '病名B', 24);
12insert into medical values (05, '病名B', 23);
13insert into medical values (06, '病名B', 22);
14insert into medical values (07, '病名B', 21);
15insert into medical values (08, '病名C', 33);
16insert into medical values (09, '病名C', 33);
17insert into medical values (10, '病名C', 32);
18insert into medical values (11, '病名C', 31);
19
20select part, maxa, id
21from (
22 select id,
23 part,
24 a,
25 max(a) over(partition by part) as maxa,
26 row_number() over(partition by part order by a desc, id) num
27 from medical
28)
29where a = maxa
30and num = 1;
31
32-- part|maxa|id
33-- 病名A|13|3
34-- 病名B|24|4
35-- 病名C|33|8
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/03 08:28