X



トップページDB@2ch掲示板
1002コメント319KB
SQL質疑応答スレ 18問目
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2018/01/04(木) 22:12:22.14ID:???
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。

SQLという言語はISOによって標準化されていますが
この標準を100%実装したDBMSは存在せず、
また、DBMSによっては標準でない独自の構文が
追加されていることもあります。

質問するときはDBMS名を必ず付記してください。

【質問テンプレ】
・DBMS名とバージョン
・テーブルデータ
・欲しい結果
・説明

前スレ:
SQL質疑応答スレ 17問目
https://mevius.5ch.net/test/read.cgi/db/1468157341/
0569NAME IS NULL
垢版 |
2018/09/29(土) 21:34:54.80ID:9EBEb433
すごい会話だなw
0570NAME IS NULL
垢版 |
2018/09/29(土) 21:36:14.75ID:9EBEb433
>>568
自作自演?
0571NAME IS NULL
垢版 |
2018/09/29(土) 21:38:54.14ID:???
>>568
桐もDBASEもリレーショナルデータベースだな
テーブルであるならそうかといえば、ちょっと違う

複数のテーブルを関係性で紐付けが出来るなら
リレーショナルデータベースと呼んで良いと思う

Excelの表はテーブルだけど誰もそうは呼ばないしな
0572NAME IS NULL
垢版 |
2018/09/29(土) 22:03:17.34ID:???
情報処理試験とかデータベースの勉強をすれば初めの方で説明されているはずだけど、
リレーショナルの前には階層型やネットワーク型といったデータベースの形式があった。

ついでに言えば、リレーショナルデータベースには「複数のテーブル」などという要件はない。
複数のテーブルはその直積である1テーブルと等価なんで。
0573NAME IS NULL
垢版 |
2018/09/29(土) 23:12:42.69ID:9EBEb433
なんか変な素人が出てきたなw
0574NAME IS NULL
垢版 |
2018/09/29(土) 23:27:01.69ID:???
普通はRDBMSと言えばリレーショナルデータモデルを表現できるだけでなく
ACID特性を備えるのが必要条件とされる
最近流行りのNoSQLなんかはリレーショナルデータモデルを表現するものではない上に
ACID特性のいずれかを満たさないのが普通だったりする
0575NAME IS NULL
垢版 |
2018/09/29(土) 23:29:52.65ID:9EBEb433
NoSQLが最近ものだと?

タイムマシンで過去から来た人間の書き込み?
0576574
垢版 |
2018/09/30(日) 00:54:24.60ID:???
しまった
自ら正解を出すことはできず文句しか言わない人に絡まれてしまった
0578NAME IS NULL
垢版 |
2018/09/30(日) 09:28:56.36ID:???
おまえらが知る前から俺は使ってるんだ( ・`ー・´) +
0579NAME IS NULL
垢版 |
2018/09/30(日) 14:41:59.34ID:???
>>574
RDBとDBMSの区別がつかないなら、ややこしくなるだけだから黙っとけな
0580NAME IS NULL
垢版 |
2018/09/30(日) 22:46:54.70ID:???
プライマリキーをフォーリンキーにすることはできますか?
0581NAME IS NULL
垢版 |
2018/10/01(月) 00:24:20.26ID:???
できるが変な設計だなとは思う
0582NAME IS NULL
垢版 |
2018/10/01(月) 12:38:28.99ID:???
>>581
時系列データのテーブルが2つあって
時間をフォーリンキーにしたいんですけどおかしいですか?
0583NAME IS NULL
垢版 |
2018/10/01(月) 12:51:24.62ID:Q6K7qC3N
>>580
単に1対1のテーブルだからおかしくはない。
0584NAME IS NULL
垢版 |
2018/10/10(水) 11:28:56.03ID:???
インデックスが使われるSQL文の書き方というのは、例えば出庫データに
商品コード順+出荷日順+伝票番号順というインデックスを作っておいて
SELECT * FROM 出庫データ WHERE 商品コード='A01' ORDER BY 商品コード, 出荷日, 伝票番号
みたいにするとレスポンスが速くなるということでしょうか?
0585NAME IS NULL
垢版 |
2018/10/10(水) 21:59:19.97ID:G1VCUlYl
>>584
プラス記号の意味がよくわからんが
CREATE INDEX(商品コード,出荷日,伝票番号)
という複合主キーを作成すると
例示のSQLは速くなるだろうが
ただしインデックスの順序と異なる
ORDER BY 出荷日,商品コード
などと場合は効かない
0587NAME IS NULL
垢版 |
2018/10/11(木) 23:22:18.86ID:LDSiJwGe
>>584
忠告しておくが、インデックスが使われるSQLを書くのではなくて、問い合わせの内容とインデックスが必要かどうかを考えてSQLを書く。

SQLがこうだから、このSQLはこのインデックスが使われるとSQLだけでは言いきれない。
0588NAME IS NULL
垢版 |
2018/10/11(木) 23:32:44.06ID:ppvirY+z
>>586
複合主キーじゃないわ複合インデックスね

>>587の言うように
実際に効くかどうかは実行計画で決まるので
インデックスを使ったかどうかは
実際の実行計画を取得しないとわからない
オプティマイザが意図したインデックスを使ってくれない場合
ヒントで特定インデックス使用を強制することもDBMSによっては可能
0591NAME IS NULL
垢版 |
2018/10/14(日) 20:22:51.35ID:???
 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正國民投票法』、でググってみてください。
(へいわ)は、勝ち取るものです。拡散も含め、お願い致します。
0592NAME IS NULL
垢版 |
2018/11/01(木) 06:26:01.46ID:imTVWlJr
質問です。
以下のようなテーブルがあったとします。
id|name
------
0|aaa
1|bbb
2|ccc

aaa,bbb,ddd,eeeを呼び出し側から与えて、nameにない項目(dddとeee)を取得したいです。
こういう場合どのように書けばよいでしょうか。
擬似的にaaa,bbb,ddd,eeeの項目をテーブルのように扱えればできそうですが、やり方がわかりません。
SQLiteを使っていますが、汎用的な書き方でできればしたいです。
よろしくおねがいします。
0594NAME IS NULL
垢版 |
2018/11/01(木) 11:56:15.87ID:???
汎用的には、テーブルを作ってしまうのが良いと思う
0595NAME IS NULL
垢版 |
2018/11/01(木) 12:45:48.88ID:pgw6fBBH
SELECT
a.empno<br />
,a.ename
,a.job
,b.ename AS 'mname'
FROM
emp a
,emp b
WHERE
a.mgr = b.empno;
このようなSQLを書いたのですが、SELECTのAS句が機能しません。どうすれば機能しますか?
0596NAME IS NULL
垢版 |
2018/11/01(木) 13:00:22.93ID:???
'mname' の囲みいらない
0597NAME IS NULL
垢版 |
2018/11/01(木) 14:17:52.92ID:imTVWlJr
意見ありがとうございました。
汎用的なのは諦めて、SQLiteでは以下で疑似的なテーブルができるようなので、これをもとにSQLを考えていこうと思います。
WITH t(name) AS (SELECT * FROM (VALUES ("aaa"), ("bbb"), ("ddd"))) SELECT * FROM "t";
0598NAME IS NULL
垢版 |
2018/11/01(木) 19:59:14.73ID:vMwdzdp/
>>595
行頭に,を書く悪習はいいかげんヤメロ
0599NAME IS NULL
垢版 |
2018/11/01(木) 21:02:02.93ID:???
行頭に,を書くとどういう問題があるんだ?
0600NAME IS NULL
垢版 |
2018/11/01(木) 21:32:48.31ID:vMwdzdp/
>>599
ヴィジュアル的に認識しにくい
0601NAME IS NULL
垢版 |
2018/11/01(木) 21:50:22.90ID:???
まさかそれだけ?
0602NAME IS NULL
垢版 |
2018/11/02(金) 09:06:50.55ID:???
>>599
見た目にブサイク
(個人の感想です)
0603NAME IS NULL
垢版 |
2018/11/02(金) 09:48:07.02ID:???
膨大なカラム数があって、スクリプトで処理しているときには都合が良いかもしれないが、
手作業で編集する分にはどっちでもいい気がする
0604NAME IS NULL
垢版 |
2018/11/02(金) 12:32:46.28ID:c/Fx/3hC
コードは読むもんだと教わらんかったんかおまえら?
ヴィジュアル問題の大切さがいまいちわかっとらんな
0605NAME IS NULL
垢版 |
2018/11/02(金) 13:13:36.22ID:DS+sU5kd
前カンマの方が打ち忘れが減るので
自分はこちらのヴィジュアルが合っているらしい
0606NAME IS NULL
垢版 |
2018/11/02(金) 19:10:39.71ID:ckbyV4Q5
それヴィジュアルちゃうやんw
0607NAME IS NULL
垢版 |
2018/11/02(金) 19:39:46.15ID:???
前にカンマの方がコメントアウトする時に楽
0608NAME IS NULL
垢版 |
2018/11/02(金) 22:38:08.71ID:ckbyV4Q5
だからヴィジュアルちゃうやんそれ
しかもどっちゃでも変わらんしw
0609NAME IS NULL
垢版 |
2018/11/02(金) 22:53:44.45ID:???
カンマの忘れとか、余分なカンマとか、割とよくやるw
0610NAME IS NULL
垢版 |
2018/11/03(土) 03:58:33.81ID:Pv5mB3Rz
最近JSONとか末尾カンマ無視するのあるよね
あれ導入されれば後ろでもいいんだけどな
前の方が行カット&ペーストで入れ替えやすい
0611NAME IS NULL
垢版 |
2018/11/03(土) 09:51:12.69ID:JBJEgXB4
前カンマの方が綺麗だと思うけどなあ
カンマと列名の間にタブなりスペースなり入れてカンマの位置を揃えるの
テキストエディタで矩形選択を使ってごりごり編集するのに便利なのだ
0612NAME IS NULL
垢版 |
2018/11/03(土) 10:58:19.38ID:???
人の好きずきの問題をここで語られても
0614NAME IS NULL
垢版 |
2018/11/04(日) 12:09:42.60ID:???
書式整形ソフト使って好きな形で読め。
--のコメントさえなければSQLは改行なし
で書けるんだから読むやつが好きに整形しろ。
ここで個人の好みの書式の話しされると
うざい!!
0615NAME IS NULL
垢版 |
2018/11/04(日) 12:23:08.21ID:???
ちょっと難しい問題を出してみて
そうしたら、多分静かになるから
0616NAME IS NULL
垢版 |
2018/11/11(日) 17:44:06.06ID:DVzqXgBV
そもそもカンマがいらなかったんだよな。

英文っぽくしたためにカンマ区切りにしてしまった。

列名の区切りは半角スペースか改行でよかった。
0617NAME IS NULL
垢版 |
2018/11/23(金) 19:38:48.29ID:NImj8hV3
質問させてください。
使っているのはSQLite(Python)です。

あるテーブルに、たとえば性別、血液型、職業というカラムがあって、
それぞれ、男、A、会社員、などと、データが入っているとします。
これら3つのカラムの中身について、テーブル内にある組み合わせの
パターンをすべて抽出したいのですが、sqlでどのように書けば効率がよいでしょうか?

抽出後、(男、A、会社員)は何名、(女、A、会社員)は何名、、、と
集計することが目的です。テーブルにより起こる組み合わせが様々なので、
都度調べる必要があります。

単純にFor文で1行ずつ調べて、過去にない組み合わせであれば外部のリストに
追加する形だと、非効率な気がしています。
良い方法があればお教えください。
0619NAME IS NULL
垢版 |
2018/11/23(金) 20:05:35.29ID:???
>>617
こうじゃないか

select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;
0620NAME IS NULL
垢版 |
2018/11/24(土) 03:57:01.05ID:???
効率悪いし、何名か?が取れないと思う
0622617
垢版 |
2018/11/24(土) 12:35:17.12ID:???
>>619

ありがとうございます。
助かりました。
0623NAME IS NULL
垢版 |
2018/11/24(土) 16:31:58.75ID:Pyo9iAE3
再び質問です。
教えてもらった

select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;

で得られる'人数’を同じテーブル内の別カラムに保存したいと思い、
カラムは事前に作成しておいて、

update 'テーブル' set '人数のカラム' =
(select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`)

としてみたのですが、group byの最後のグループのcountの結果が
全部の行に上書きされてしまいます。

各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。

(目的は、その人(各行)の所属するグループの人数を個別に保存することです。)

よろしくお願いします
0624NAME IS NULL
垢版 |
2018/11/24(土) 17:14:07.61ID:???
>>623
> 各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。
> (目的は、その人(各行)の所属するグループの人数を個別に保存することです。)
そんな設計やめなよ…
レコードに追加/削除/更新する度にその人数も更新しないとだめだし
毎回求めてもよほどでかい表でない限りは問題にならないだろ
0625NAME IS NULL
垢版 |
2018/11/24(土) 17:28:12.86ID:???
>>623
使用意図はわからんが、どうしても一時的にテーブルに保存したきゃUPDATEじゃなくて、DELETE→INSERTでよくね?
オイラならテーブル変数使うけど
0626NAME IS NULL
垢版 |
2018/11/24(土) 17:32:36.45ID:???
>>624

コメントありがとうございます。
実はモデルをすり替えて質問していまして、
データを書き換えての繰り返し計算に使いたいのです。

その後、order by でなく、select以下のテーブルをtable as Tなどとしてwhere句で’テーブル’とTの要素が等しい時に限定したら一応できました

何故かブロックされたのでスマホから
0627NAME IS NULL
垢版 |
2018/11/24(土) 17:49:44.47ID:Pyo9iAE3
>>625
使用意図は、エクセルの表計算のように、
左のカラムにデータがあって、それを元に
右の方のカラムに途中計算を書いていって、
最後に得られた結果の誤差が減るように
また最初の方から計算を繰り返すような感じです。

1巡の計算が大きすぎて記録を残したいのですが、ご指摘の通り、記録が不要なところはテーブル変数がよさそうです
勉強してみます
0628NAME IS NULL
垢版 |
2018/11/24(土) 17:50:56.49ID:???
オレ多分頭悪いんだろう
>>626 で何を言っているのかよく分からない

愚直に>>623の要求通りのものを書くとすれば
`テーブル`に`人数`カラムを追加したとして
update `テーブル` t1 set
`人数` = (
select `人数` from (
select `性別`,`血液型`,`職業`, count(*) as `人数` from `テーブル`
group by`性別`,`血液型`,`職業`
) t2
where
t1.`性別` = t2.`性別` and
t1.`血液型`= t2.`血液型` and
t1.`職業` = t2.`職業`
);

でも、こんなこと実際にはしないし、
もっと良い方法が必ずあるはずだし
見直した方がいい
0629NAME IS NULL
垢版 |
2018/11/24(土) 18:02:53.98ID:Pyo9iAE3
>>628

626が意味不明で申し訳ないです。
書かれておられるように自分もwhereで
比較しました。

計算は各行に対してするのですが、
それが所属するグループの平均等の計算値も
途中計算で何度もつかうのです
それで、各行にそれを入れておきたいのです

なんだか変な事をやってるみたいで恐れ入ります
0630NAME IS NULL
垢版 |
2018/11/24(土) 18:07:07.78ID:???
結局何をしたいのかさっぱり理解できないけどわざわざ違うモデルで答えさせるとか失礼な事するやつだからスルーしとくわ
0631NAME IS NULL
垢版 |
2018/11/24(土) 18:18:02.74ID:???
質問をシンプルにしたくてモデルを
変えましたが、失礼と思われたようで
済みません
0632NAME IS NULL
垢版 |
2018/11/24(土) 18:26:04.19ID:???
わざわざスルーするって宣言してる奴なんだからスルーでいいよ
0633NAME IS NULL
垢版 |
2018/11/24(土) 21:20:38.92ID:???
合計値も平均値も割と簡単に計算出来ますし
それをテーブルに入れた方が良いのか
それともDBを見ているミドルの方で計算させた方が良いのか
全体の仕組みと性能で総合的に考えた方が良いかもしれません
0635NAME IS NULL
垢版 |
2018/11/26(月) 21:45:52.63ID:???
mysql,mariadbでmyisamが非推奨になったのはなぜですか?
innodbではbeginやcommitが使えるそうですが、メモ的なデータをinsertするぐらいなのですが、
それでもinnodbを使った方がいいのでしょうか?
0636NAME IS NULL
垢版 |
2018/11/26(月) 22:42:16.59ID:???
そういうのは各RDBのスレがあるんだから、そこで聞けよ
0638NAME IS NULL
垢版 |
2018/11/27(火) 03:05:52.60ID:???
専用スレがあったのですね、誘導ありがとうございます。
0640NAME IS NULL
垢版 |
2018/11/29(木) 10:10:36.91ID:???
以下のようなデータがあった場合、
name date rate
AAA 11/1 2000
BBB 11/1 900
CCC 11/1 500
DDD 11/1 700
AAA 11/2 2000
BBB 11/2 1200
CCC 11/2 500
DDD 11/2 700
AAA 11/3 2000
BBB 11/3 500
CCC 11/3 1500
DDD 11/3 700

最新のrateが1000未満だけを抽出するにはどうすればよいでしょうか?
DDD 11/3 700
BBB 11/3 500
0641NAME IS NULL
垢版 |
2018/11/29(木) 11:07:44.82ID:???
>>640 こうかな?
select name, MIN(date), rate
from hoge
where rate < 1000
group by name, date, rate
0642641
垢版 |
2018/11/29(木) 11:26:02.69ID:???
違った、こうか?
select a.name, a.date, a.rate
from hoge as a,
(select name, MAX(date) from hoge where rate < 1000 group by name, date) as b
where a.name = b.name and a.date=b.date;
0643NAME IS NULL
垢版 |
2018/11/29(木) 13:04:58.18ID:???
SELECT * FROM a WHERE (name,date) IN (SELECT name,MAX(date) FROM a GROUP BY name) AND rate<1000
0644NAME IS NULL
垢版 |
2018/11/29(木) 13:09:17.80ID:???
>>642
レスありがとうございます。
試したのですが、fromのselectでMAX(date)以外のも全て列挙されてしまいます。
DDD 2018/11/01 00:00:00
BBB 2018/11/01 00:00:00
CCC 2018/11/01 00:00:00
DDD 2018/11/02 00:00:00
CCC 2018/11/02 00:00:00
DDD 2018/11/03 00:00:00
BBB 2018/11/03 00:00:00
ちなみに使用DBはpostgresqlです。
0645NAME IS NULL
垢版 |
2018/11/29(木) 13:14:19.05ID:???
>>643
おお!できました!!
ありがとうございます!
整理して理解します。
0646NAME IS NULL
垢版 |
2018/11/29(木) 16:31:32.41ID:???
こういうときに色々意地悪な条件をついつい考えてしまう
最新日って言う場合、1件だけになるのか、
それとも同一日は全部該当にするのか
結果表示に時刻まで出てきていると悩んでしまう
その後の処理で何を使いたいかにもよるんだろうけど
0647NAME IS NULL
垢版 |
2018/11/29(木) 23:50:24.51ID:0rvo1ya5
>>646
ここで質問してくるやつはいつも仕様などあまり考えていない。
0648NAME IS NULL
垢版 |
2018/12/03(月) 19:05:02.42ID:???
2つの文字列カラムがあり、一方がもう片方の文字列から始まるものだけを抽出したい場合どうすればいいですか?
str1 str2
ABC ABCDEF
DEF aiu
GHI GHIxxx
JKL akasa
の場合、
ABC ABCDEF
GHI GHIxxx
0649NAME IS NULL
垢版 |
2018/12/03(月) 20:36:59.12ID:???
>>648
str1の長さがstr2より短いことがわかってるなら
where left(str2, len(str1)) = str1
でいいかと
0650NAME IS NULL
垢版 |
2018/12/03(月) 22:05:33.10ID:???
ためしてないけど、
where (str1 like str2+'%') or (str2 like str1 + '%')とかでどうだろう
0651NAME IS NULL
垢版 |
2018/12/03(月) 22:51:42.17ID:???
>>648
んじゃ他ので
WHERE PATINDEX(str1 + '%', str2) = 1
0652NAME IS NULL
垢版 |
2018/12/04(火) 10:41:43.68ID:???
>>649>>650>>651
お三方、ありがとうございました。
ばたばたしてて遅くなりましたが、確認できました。
0654NAME IS NULL
垢版 |
2018/12/04(火) 11:59:27.62ID:KJK6oDpE
大丈夫。ただ+が使えるのはMS系だな。
後は使えるやり方に読み換えて
0655NAME IS NULL
垢版 |
2018/12/09(日) 16:50:28.29ID:???
SQL SERVERのSQL文について質問です

【条件】
1.全てのテーブル内容を取得
2.@ABのM_CODEとS_CODE、CのM_CODEとS_CODEが一致したNAMEを取得

一つのSQL文で完結できると助かります
以上の内容でご教示お願いします


@Table1
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 1 | 1 | a
02 | 1 | 2 | aa
03 | 1 | 3 | aaa
04 | 1 | 2 | aaaa

ATable2
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 2 | 1 | ab
02 | 2 | 2 | abb
03 | 2 | 3 | abbb
04 | 2 | 2 | abbbb

BTable1
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 3 | 1 | ac
02 | 3 | 2 | acc
03 | 3 | 3 | accc
04 | 3 | 2 | acccc

CCode
M_CODE | S_CODE | NAME
--+----------+-----
1 | 1 | サッカー
1 | 2 | 野球
1 | 3 | バスケット
2 | 1 | バナナ
2 | 2 | リンゴ
2 | 3 | オレンジ
3 | 1 | サバ
3 | 2 | カツオ
3 | 3 | マグロ
0656NAME IS NULL
垢版 |
2018/12/09(日) 18:37:50.56ID:???
1,2,3をuionして4とjoinすればいいんだろうけど,何んでこんな設計?
0657NAME IS NULL
垢版 |
2018/12/09(日) 18:58:36.79ID:???
欲しい結果がよくわからん

4に1〜3をJOINするだけじゃダメなのか?
0658NAME IS NULL
垢版 |
2018/12/11(火) 21:37:14.11ID:???
この板誰も人いないけど、他にデータベースの話題扱う場所あるの?
0659NAME IS NULL
垢版 |
2018/12/12(水) 07:07:27.08ID:???
ここはSQLの板だから
DBは別にあるだろ
0660NAME IS NULL
垢版 |
2018/12/14(金) 13:53:33.51ID:???
スレはSQLだが、ここはデータベース板
0661NAME IS NULL
垢版 |
2018/12/17(月) 17:59:53.76ID:???
Oracle 12cでのSQLに関する質問です。

2つのDATE型のカラムの差をhh:mm:ssで出力したいです。


開始日が2018/12/13 7:00:00
終了日が2018/12/17 17:30:30
だとして、この2つの差(経過時間)の出力結果は
106:30:30
と出したいのですが、出来るだけ簡単に計算して出す方法ありますでしょうか?
(時・分・秒でそれぞれ分解して掛け算して計算する方法がネット上にありましたが、もう少しシンプルにできないか模索しています。)
良い御知恵がありましたらご教示お願い致します。
0662NAME IS NULL
垢版 |
2018/12/17(月) 18:56:46.00ID:???
質問です。
製品のメジャーバージョン、マイナーバージョンという2列があり、
メジャーバージョンが最大の中から、
マイナーバージョンも最大の行を取り出すにはどうしたらいいでしょうか?

postgresql9です。
0663NAME IS NULL
垢版 |
2018/12/17(月) 19:37:22.24ID:???
>>662
postgresql9手元で動かせません。MariaDBです
テーブル名はproductと仮定しました

select * from product
where (major_ver,minor_ver) in (
select major_ver,max(minor_ver)
from (
select major_ver,minor_ver
from product
where major_ver = (select max(major_ver) from product )
) as t
);
0664NAME IS NULL
垢版 |
2018/12/18(火) 00:22:00.75ID:???
>>663
なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか
ありがとうございます。
0665NAME IS NULL
垢版 |
2018/12/18(火) 01:53:40.53ID:???
window関数使うともっと綺麗に書ける気がする

俺はwindow関数苦手だから書けないが
0666NAME IS NULL
垢版 |
2018/12/18(火) 23:18:20.88ID:d1jtTCeB
>>661
あんたはDATE型が文字列だとでも思っているのか?
0667NAME IS NULL
垢版 |
2018/12/27(木) 14:42:38.04ID:???
a. 顧客テーブル(顧客コード, 顧客名)
b. 商品テーブル(商品コード, 商品名)
c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数)

売上日, 顧客名, 商品名, 売上数

このように結果が表示されるSQL文を教えてください
0668NAME IS NULL
垢版 |
2018/12/27(木) 15:25:29.94ID:???
何か基本のキって感じ
これが書けないとヤバいと思う
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況