お力添えよろしくお願い致します。 0803NAME IS NULL2019/03/10(日) 11:25:40.65ID:??? FROM 社員テーブル T1 WHERE NOT EXISTS ( SELECT * FROM 社員テーブル T2 WHERE T2.所属部署 = T1.所属部署 AND ( T2.入社年度 < T1.入社年度 OR T2.入社年度 = T1.入社年度 AND T2.id > T1.id )) 0804NAME IS NULL2019/03/10(日) 11:59:03.32ID:???>>803 www 08058022019/03/10(日) 12:06:30.08ID:Q3ybtzHt 803さんのはまだ試してないですが、 group byとhavingで2回絞るのは無理ですかね? 0806NAME IS NULL2019/03/10(日) 13:00:21.03ID:???>>802 つかってるDBMSかけ
SELECT * FROM( SELECT ROW_NUMBER() OVER( PARTITION BY 所属部署 ORDER BY 入社年度,社員id DESC) as 順位, * FROM 社員テーブル ) t where t.順位=1
select max(`社員id`),`氏名`,`所属部署`,`入社年度`,`生年月日` from `社員テーブル` where (`所属部署`,`入社年度`) in (select `所属部署`,min(`入社年度`) from `社員テーブル` group by `所属部署`) group by `所属部署`; 0809NAME IS NULL2019/03/10(日) 16:06:47.18ID:???>>806 Row_Number wwwwwwwwwwww 0810NAME IS NULL2019/03/10(日) 16:08:11.04ID:???>>806 そういう使いもんならないの教えんのやめ 0811NAME IS NULL2019/03/10(日) 21:01:07.81ID:g5zHpNPp これから仕事で必要になるためSQL勉強しています。 皆さんはどうやって勉強していますか?
現在SQLBoltってサイトで勉強しています。 覚えが遅いためなかなか覚えられません。 一応ExcelのVBAはできます。 勉強法がわからないのでAccess VBA Standardの資格で勉強した方がいいでしょうか? 0812NAME IS NULL2019/03/10(日) 21:45:35.27ID:??? プログラム言語と違って、何か適当な例題があるわけじゃないし、 割と実践的に体で覚える感じでした SQLを使用するソフトによって多少、あるいは大きく違ったりするので SQLをどういう所で使いたいか、ソフトに何を使うかを見極めて学習すると 効果的かも知れません それから、SQL言語はVBAとは異なるものです 0813NAME IS NULL2019/03/10(日) 21:51:09.47ID:???>>811 今どんなことやってるん? 0814NAME IS NULL2019/03/10(日) 21:52:55.29ID:???>>812 使いものになるまでの所要期間だいたいどれくらい? 0815NAME IS NULL2019/03/10(日) 21:59:42.65ID:??? 命がけで取り組めば半年もあればなんとかなります 0816NAME IS NULL2019/03/10(日) 22:06:53.55ID:???>>815 すみません横から失礼いたします。 業務上必要に迫られ勉強することになりました。 環境は会社で用意されてますが前任者が居なくなってしまう為、ゼロから始めて1ヶ月半でモノにしろと言われています。 命がけで半年ですか…胃が痛くなってきました。 1ヶ月半など無茶苦茶な要求と言えそうですね(泣) ちなみにエンジニアさんですか?当方非エンジニアです。 0817NAME IS NULL2019/03/10(日) 22:10:58.93ID:??? 複雑さの程度にもよりますから 簡単なものでしたら、1か月も掛からずに習得は出来るでしょう 担当する業務の内容次第です 0818NAME IS NULL2019/03/10(日) 22:19:54.37ID:???>>817 レスありがとうございます。 段階にもよりますね。 予定されているものを見たところサブクエリ5〜7つ、最後で結合するという説明でした。 かなり長くこんなの書けるのだろうかと気が遠のきました。 テーブルの挿入などはなさそうです。 0819NAME IS NULL2019/03/10(日) 23:06:33.52ID:g5zHpNPp>>812 私はあまり覚えがよいほうじゃないので、業務が始まる前に 勉強して基本的な知識をつける予定でしたが、 やはり実務をこなして体で覚えるほうが早いのですね。 レスありがとうございます。
社員テーブルに該当するものが複数テーブルから構成されたサブクエリだとかなり重くなりました。 0828NAME IS NULL2019/03/11(月) 11:49:18.57ID:??? Select文のasに( )を使いたいのですが、どうかけばいいでか? 0829NAME IS NULL2019/03/11(月) 12:26:03.33ID:??? ダブルクォートで括るのが普通だが 角括弧やバッククォートを使うDBMSもある 0830NAME IS NULL2019/03/11(月) 13:16:00.18ID:???>>828 そういったあんた個人のわがままが通ったとして、 で、ユーザー(つまり結果)に優位性があるのか? 0831NAME IS NULL2019/03/11(月) 13:27:39.34ID:???>>829 レスありがとうございます。 使ってるのはpostgresqlてすが、" ではダメみたいです。
>>830 As 時間 としていたところ、ユーザーから 時間(分) と表示して欲しいとの要望かありました。 ()は特殊な文字てあることは理解していますが、何らかの策があるのではと質問したのですが。あまりに非常識なようでしたら諦めます。 0832NAME IS NULL2019/03/11(月) 14:38:08.55ID:??? postgresなら"でいいはず なんらかのプログラミング言語を介して使っているなら そのプログラミング言語に対して"をエスケープしなければならない 0833NAME IS NULL2019/03/11(月) 15:02:14.67ID:???>>832 すみません、アホなことしてました。 時間"("分")" って… "時間(分)"でokでした。 0834NAME IS NULL2019/03/12(火) 15:55:28.54ID:wb2Tlo5B まもなく日本から世界経済が崩壊し、世界教師マYトレーヤとUFOが出てくる。 それからベーシックインカムがはじまるので、20年間ヒキコモリの人でも死にはしない。 むしろ、心配するなら被曝のほう。
【メルトダウンA級戦犯】 『非常用発電機』安倍が放置 『非常用空冷回路』小泉が撤去 死刑求刑 https://rosie.5ch.net/test/read.cgi/liveplus/1552357792/l500835NAME IS NULL2019/03/20(水) 08:25:55.58ID:??? ロジックどこまでSQLにするのが正解? 0836NAME IS NULL2019/03/20(水) 08:52:06.23ID:IPQHQif1>>835 できるだけSQLには詰め込まない。 0837NAME IS NULL2019/03/23(土) 10:38:46.25ID:??? 何個までテーブル結合する? 0838NAME IS NULL2019/03/23(土) 10:48:20.01ID:???>>837 必要なだけ 経験としては10個ぐらいまでやったことある 0839NAME IS NULL2019/04/06(土) 16:59:18.80ID:??? テーブル No1 No2 No3 No4 No5 No6 No7 No8 data1 A B A A A C B A data2 A A A A A A B B data3 C C C A B A A A data4 A A C C A B A B data5 A A B A A B B A data6 A C C A C C A A
ほしい結果 A B C data1 5 2 1 data2 6 2 0 data3 4 1 3 data4 4 2 2 data5 5 3 0 data6 4 0 4
横方向にA,B,Cの数をカウントしたいですが、SELECT文のみで実施するとしたらどういったクエリになりますか? oracle12です。 0840NAME IS NULL2019/04/06(土) 18:34:14.74ID:zJrZyIQq>>839 Excelでやれば? 0841NAME IS NULL2019/04/06(土) 18:34:35.19ID:??? select No1, ((case No2 when A then 10000 when B then 100 when C then 1 end) +(case No3 ……) +……) from テーブル 0842NAME IS NULL2019/04/06(土) 20:48:36.77ID:???>>839 スマホだから試してないけど (セレクトはselectに置換えてくれ) セレクト T.data as data, sum(case T.NO when 'A' then 1 else 0 end) as A, sum(case T.NO when 'B' then 1 else 0 end) as B, sum(case T.NO when 'C' then 1 else 0 end) as C from ( セレクト data, NO1 as NO from table union all セレクト data, NO2 as NO from table (* 中略 *) union all セレクト data, NO8 as NO from table ) T group by T.data 0843NAME IS NULL2019/04/06(土) 22:02:53.39ID:???>>840 >>841 >>842 レスありがとうございます。
data_ No rank data1 No1 A data2 No1 A data3 No1 C data4 No1 A . . . data1 No8 A data2 No8 B data3 No8 A data4 No8 B data5 No8 A data6 No8 A 0847NAME IS NULL2019/04/07(日) 12:44:56.58ID:???>>846 > 毎日のレコード数が凄いことになっちゃうなーって。 どんなシステムかわからんけど今時そこら辺のPCでも100万レコード程度は普通に扱えるしOracleでそこそこのサーバー入れてりゃ1億件程度でも破綻しないよ 0848NAME IS NULL2019/04/07(日) 14:24:50.93ID:???>>847 1次元配列だと200万レコード/日ぐらいが想定されるので、少し厳しいのかなと感じています。 集計前・集計後のどちらもが必要なので、各々のテーブルを作るのが良さそうですかね。 0849NAME IS NULL2019/04/07(日) 14:33:05.24ID:??? 項目にsumA、sumB、sumCを追加しておいて レコード挿入時に集計しておけば良いのではないか? 0850NAME IS NULL2019/04/07(日) 14:35:19.43ID:??? 要件後出しかぁ 0851NAME IS NULL2019/04/07(日) 14:49:06.95ID:??? select No1 ,decode(No2,A,1,0)+decode(No3,A,1,0)+…+decode(No8,A,1,0) As Acnt ,decode(No2,B,1,0)+decode(No3,B,1,0)+…+decode(No8,B,1,0) As Bcnt ,decode(No2,C,1,0)+decode(No3,C1,0)+…+decode(No8,C,1,0) As Ccnt from テーブル 0852NAME IS NULL2019/04/07(日) 19:59:58.82ID:XK0411W4 20年前のPCの感覚で考えているんだろうな。しかも巨大Excel風がお好みらしいから無視が一番。 0853NAME IS NULL2019/04/07(日) 20:08:22.18ID:??? 糞メーカー製品のせいでテーブル変えられないって訳でもなく、自分でそういう設計にしてるならしょうがないね 0854NAME IS NULL2019/04/07(日) 20:31:56.17ID:??? decodeとかOracleしか使えないのよりcase when で記述していったほうがよくね 0855NAME IS NULL2019/04/07(日) 21:47:20.06ID:mpDpVIK/ いじめはどこの町にもあるが島本町は特に酷い 「大阪府三島郡島本町のいじめはいじめられた本人が悪い 」なんて 公言する町は他に無い 0856NAME IS NULL2019/04/07(日) 22:22:31.97ID:??? Oracle 12 なら VARRAY とかでもいいかも ただ操作する関数は貧弱なのでストアド必須になると思うが 0857NAME IS NULL2019/04/07(日) 23:49:47.59ID:+nydsyOL>>856 知識がないのになんで無理やり書き込むの? 0858NAME IS NULL2019/04/08(月) 02:31:15.60ID:n+bY9Kjk Postgres11を使用しています。
Accessで作れますか? 調べたら Excelと同じOfficeですし SQLもあるそうですね それと 検索機能とかでスピードアップ期待 データの複製はしやすそうですね 0871NAME IS NULL2019/04/18(木) 12:50:12.86ID:??? 現状のスタイルを頑なに守るよりも、市販のパッケージに業務形態を合わせたほうが幸せになれると思う。 0872NAME IS NULL2019/04/19(金) 03:51:41.96ID:YxPtsFlc SELECT key, 名前, 住所, 電話番号 FROM usertable WHERE (key = (SELECT MAX(key) AS EXPR1 FROM usertable usertable_1))
このSQLは何をしているのでしょうか? 特に、EXPR1が分からないのと、FROM後に、DBには存在しないusertable_1というテーブルが指定されているのが理解出来ません。 0873NAME IS NULL2019/04/19(金) 05:43:22.57ID:???>>872 EXPR1はMAX(key)の項目名、 usertable_1はusertableの一時的な名前 と名前を付けているだけです が このSQLの場合は特に名前を付ける意味はありません 0874NAME IS NULL2019/04/19(金) 12:05:23.81ID:9Q8CShQD>>872 無駄なテーブル別名、カラム別名があり、さらに無駄な括弧がある。
こうなった経緯は読み取れない。 0875NAME IS NULL2019/04/19(金) 12:29:57.43ID:??? 項目別名はけっこうasつけるひと多いな テーブル別名にはみんなつけないけど 0876NAME IS NULL2019/04/19(金) 12:30:53.73ID:??? テーブル別名にAsあったっけ? 0877NAME IS NULL2019/04/19(金) 12:40:53.05ID:???>>871 ならない 他業界しかやってないやつに 現場の気持ちはわからない
どんなソフトよりも 自分のExcelが一番 今後さらに良くするための質問 0878NAME IS NULL2019/04/19(金) 19:23:24.52ID:??? SQL標準では昔から列別名もテーブル別名もASをつけて良いのだが なぜかOracleでは昔からテーブル別名にASをつけられない 0879NAME IS NULL2019/04/20(土) 00:53:28.87ID:5u+C7Ddr>>878 それは誤り。Oracle Databaseでは特定のバージョンだけASを使用できないものがあった。 0880NAME IS NULL2019/04/20(土) 01:22:03.12ID:??? どのバージョンなら使えるのかひとつでいいので例を挙げてくれ 少なくとも最新版18cでは使えない https://docs.oracle.com/cd/E96517_01/sqlrf/SELECT.html0881NAME IS NULL2019/04/22(月) 16:40:13.06ID:??? ExcelのクエリはASで別名付けても無視するのが残念 0882NAME IS NULL2019/04/22(月) 16:48:58.86ID:HR8wVegr>>881 ExcelのSQL操作はおまけ機能みたいだからなあ。特定の文字が使えなかったりとタチが悪い。 08838812019/04/25(木) 16:05:43.06ID:??? すまん。現行バージョンでは反映されてた。 0884NAME IS NULL2019/04/27(土) 16:07:30.36ID:Nn9s9qmX>>883 現行バージョンとは何? 0885NAME IS NULL2019/04/27(土) 16:08:45.89ID:??? ORACLEの現行つったら18c 0886NAME IS NULL2019/04/27(土) 16:44:04.96ID:??? Excelの話じゃないのか? 0887NAME IS NULL2019/04/27(土) 16:48:39.97ID:??? 国語の勉強しましょう 0888NAME IS NULL2019/04/27(土) 19:08:41.10ID:??? そもそもデータベースが何かを理解してないな 表計算ソフトとは別物 計算や出力が必要ならプログラム書く必要がある 0889NAME IS NULL2019/05/01(水) 12:23:44.69ID:??? ウェブのニュースを集めてとにかくデータベースに放り込み必要なものを取り出すことをしていたのですが 先日からこのようなエラーが出てデータを取り出した結果が取れなくなりました データが取れることもありますがたまにうまく行くといった感じです
エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded コード:80004005 ソース:Microsoft OLE DB Provider for ODBC Drivers