2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【急募】SQLの上達法

1 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:31:14.895 ID:J5xadKRaa.net
考え方がわからんのや!

2 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:32:30.938 ID:PMe5E5ZWr.net
MySQLって奴?

3 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:33:01.604 ID:GnYDvrRH0.net
SQLで本当に難しいのはチューニング

4 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:33:05.242 ID:J5xadKRaa.net
>>2
まあそんなやつ

5 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:33:24.962 ID:gkvBY8TK0.net
触れる環境作れ
身近な何かをRDB設計しろ
叩きまくれ

6 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:34:12.267 ID:J5xadKRaa.net
>>5
それしかないか

7 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:34:47.113 ID:YsJGtztI0.net
箱に入ってるものを検索してるだけじゃん

8 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:38:49.795 ID:gkvBY8TK0.net
どういうレベルで分からないかにもよる

9 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:40:33.328 ID:dDfj3yIHd.net
効率的にインデックスサーチするよう設計する

10 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:42:08.950 ID:J5xadKRaa.net
SELECT文

一致するレコードの中で時間が一番遅いとかでグルーピングとかするやつ

11 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:44:54.906 ID:gkvBY8TK0.net
グルーピングか
キーがどれかだけの話やん?

12 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:49:20.631 ID:J5xadKRaa.net
それの応用したやつ

13 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:53:43.607 ID:lFN6LguTa.net
データ構造をちゃんと理解してれば余裕
正規化わからないレベルだとキツい

14 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:54:01.758 ID:XIqCLO4Zp.net
処理順がピンとくるといける

15 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:54:08.987 ID:gkvBY8TK0.net
具体例ある?

16 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 11:54:40.184 ID:x4CBSUWz0.net
数こなす

17 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:11:28.579 ID:J5xadKRaa.net
例えばこんなのすぐできる?

(問)
ID | DATE     | DATA
--+----------+-----
1 | 2007-11-11 | aaa
2 | 2007-11-11 | bbb
1 | 2007-11-10 | ccc
3 | 2007-11-12 | ddd
3 | 2007-11-11 | eee
4 | 2007-11-10 | fff
1 | 2007-11-12 | ggg

このようなテーブルから、下記のように

1 | 2007-11-12 | ggg
3 | 2007-11-12 | ddd
2 | 2007-11-11 | bbb
4 | 2007-11-10 | fff

各idに対して最新の1件だけ抽出するSQLの書き方を教えてください。

18 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:12:08.767 ID:J5xadKRaa.net
答えは見てもうわかるんだが、どう考えていくかがわからん

19 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:29:01.338 ID:cVsencC80.net
select * from T
where (I’d, date) in (
select id,max(date) from T group by id
)

20 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:30:16.255 ID:lFN6LguTa.net
having DATE=max(DATE)

とか出来た気が

21 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:30:46.231 ID:ADWCgmbza.net
仮想テーブル想像しろ

22 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:32:09.718 ID:SPEBUfFX0.net
ID重複させんな!

23 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:32:12.989 ID:Ez45f6h90.net
ゆとりなのでORMしかわからない

24 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:33:44.389 ID:lFN6LguTa.net
>>20
havingじゃなかった

25 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:36:38.213 ID:+4lUh5fY0.net
実際にデータベースサーバ作ってコマンド投げてみるとすぐ理解できるよ。
テキストだけ見てても理解に到達するのは難しい。

26 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:40:32.423 ID:J5xadKRaa.net
まあ触りまくるわ

27 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:41:13.919 ID:J5xadKRaa.net
ちな模範解答


select A.ID,
    A.DATE,
    A.DATA
from TableName A
   inner join
   (select ID, max(DATE) as MAX_DATE
    from TableName
    group by ID
   ) B
   on A.ID = B.ID
   and A.DATE = B.MAX_DATE
;

28 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 12:55:21.776 ID:vvWuA2kW0.net
>>27
(´・ω・`)こっちの方が好み

with vipQuery as (
select id, max(date) as maxDate from このようなテーブル
by id, date
)
select * from このようなテーブル
where (id, date) in (select id, maxDate from vipQuery )

29 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 13:07:21.639 ID:vRr+02hnM.net
>>28
こっちのほうがわかりやすいが
知らない人に説明するのが面倒

30 :以下、?ちゃんねるからVIPがお送りします:2019/01/19(土) 13:18:05.154 ID:vvWuA2kW0.net
>>29
(´・ω・`)知らない人はどこから湧いてきたの?

総レス数 30
6 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★