SQL初心者質問スレ [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
↑のようなテーブルがあったとして↓のビューを作成したい。
新規評価ビュー
ランキング 名前 テスト回数 平均点 評価
↑この下に、どういう結果を期待しているのか、書いてみて ランキングってのは該当点数の平均点の順位で良いのか?
とりあえず書いてみた
with
tmpデータ as (
select 名前,AVG(点数) as 平均点,COUNT(名前) as テスト回数
from(
select * from table点数 t
where t.年月日 >= (select MAX(最終評価年月) from table成績 where 名前=t.名前)
) t2
group by 名前
)
select
(select COUNT(*)+1 from tmpデータ where 平均点>x.平均点) as ランキング,
table成績.名前,テスト回数,平均点,評価
from table成績
left join tmpデータ x on table成績.名前=x.名前
ウィンドウ関数とか使えばもうちょいきれいに書けるのかもしれんが
あれ苦手なんだよなぁ レスがいっぱい早めに帰ってよかった!
>>907
>>909
今回こんな感じの結果を求めていました。
ランキング 名前 テスト回数 平均点 評価
1 花道 3 10 E
2 三井 2 30 A
3 赤木 1 80 C
>>906
>>910
ありがとうございます。さっそく試してみます。 >>906 >>910
ありがとうございました。思ってたよな動きになりました。
追加で質問なのですがsqlserverだとして
>>906の書き方
>>910の書き方で
↓のようなのを作るのは問題ないですか?
>>904の
table点数に 身長等のカラムを300追加したtable
新規評価ビューと同じようなビューを30作る。
DBとしてはDB湘北、DB陵南、DB海南等を10作成↑の内容を各DBが持っているとして
DB湘北の
table点数に数秒に1件Insertされて数百万件のデータが作られていく
Insertされるごとに30のビューが更新されていくと思うのですが、これくらいならSQLserverで問題なく動くかな?
Insertは各DBの中のtable点数だけですが
10のDBのtable点数に同時にInsertは影響がでる?のかきになります >Insertされるごとに30のビューが更新されていく
普通のビューは実データもってないから、ビューが更新されるとかありません
あとは何したいかわからんけど、実機で性能評価してください
ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど
まあ、俺なら一つのテーブルにカラム300とか、まずほんとに正しいか疑うけどな >>914
> ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど
これは純粋にハードの性能の問題です嘘をつかないでください やりたいこととしては単純にビューの内容をGridやエクセル等に表示したいです。
30のビューを作るとしても
実機で性能評価する前に>>913ぐらいなら余裕でしょなのか、そもそも無茶なのか簡単な感触がほしいなと。
300カラムは名前、時間+5tableぐらいに分割できますが
一つのビューは1tablか2tableの情報なのでtableは分割したほうがいい?と思うのですが
insaret*5がどのくらい時間かかるかわからなかったのでinsaret*1の300カラムで聞いてみました。
やっぱり分割するべきですかね >>915
今どきのまともなハードなら
ってのを追加しとくわ
それなりのハードでもDB設計腐ってたら、その程度の処理でも大変なことになるけどな >>917
「大変なこと」とはなんですか?ぼやかさずに具体的に言えばいいでしょうに
前言撤回します
アナタ嘘はついてないですね
無知なだけのようです >>919
自分の間違いを指摘されると「煽られた」ってw
どんだけ自分に都合いいんだよ馬鹿だなw 参考までに効きたいんだが、
毎秒100万アクセスがあるようなシステムってどういうものなの? >>921
某夢の国関係の予約サイトで予約開始直後とかは数十万TPS行く >>920
間違いの指摘ってこれ?
> これは純粋にハードの性能の問題です嘘をつかないでください
インデックスとかパーティションも知らんとかバカ過ぎるだろ 他人をバカにしていないと自分の存在価値を確認できない人が多いのかな >>925
お前それ好きだよなあw
どんだけバカにされたんだよw >>926
いや他人をバカにして草生やしてる人を結構見かけるから
そういう人の心の中をちょっと想像したりして楽しんでるだけだよ >>928
まあそうかもね
否定はしないよ
ただそういう人見てるとそんなに自意識過剰にならずにもっと気楽に生きればいいのになぁって思う >>929
え?お前が気張ってるからそんな狂った趣味になんだぜ? >>931
大体さあ無知ってお前が思ってる程恥ずかしい事じゃないぜ
一つ教わればその分お前が一つ賢くなるんだから
もっとフラットに自分をさらけだせばいいのに >>932
いやなぜ俺がフラットにさらけ出してない前提なのかは疑問だが
あなたのいう通りだと思うよ >>933
え?お前自分の無知を指摘されると馬鹿にされたって思う側の人だろw
簡単に分かった気になるなよ
無知でいいんだよ少しずつ理解してけば >>934
いや違うけど…
バカにされようがされまいが、自分の価値には何ら影響を与えないので
なぜなら自分で自分のことダメだと思ってないから >>935
それを「気張ってる」って他人は言うんだけど… ちょっと語弊があったかも
正確にはバカにされていると認識することがないといった方がいいのかもしれない >>937
いや…それはそれで精神的に問題あるぞ…
何度も言うけど無知でいいんだよ
もっと素直になれば?w >>938
さっきから無知という言葉を連発しているけど、なにかコンプレックスがあるの? >>938
無知かどうかって質問に答えるとしたら何も知らない訳じゃないけど知らないことの方がずっと多いと思う
全知全能か?ってきかれたら明確に否定します >>940
そもそも誰もお前の事を全知全能だなんて思ってないからw
何を怖れてるんだお前はw >>941
何も恐れていないよ
>>938
精神的に問題があると思うならそうなのかな
人に何かを言われてバカにされてると思う=自分でも自分のことをバカにしてる
ってことだと思うけどどうなんだろうね >>942
つまりお前は無知でちっぽけな自分を怖れてるんだろ?
いやこれは疑問形だけど疑問ではない
そうなんだお前は
でもなあ…皆無知でちっぽけなんだぜ? >>925
明確な理由もなしに人を嘘つき呼ばわりしてたらバカにされてもしょうがなくね? >>946
ちょっと背景がわからないけど、嘘つき呼ばわりされてるのが自分なら、自分が嘘をついていないのなら特に気にする必要がないと思う
他人が嘘つき呼ばわりされてたとしたら、その真偽はさておき、それはその人の課題であって、第三者がそれに対して何か言うものでもないとは思う 人を嘘つき呼ばわりしてもいいと?
まあそう言う考え方もあるかもな
俺はそうは考えないだけだからいちいち絡んで来なくていいよ 嘘つき呼ばわりしてる人がいたとしても、それが事実でなければただの独り言ですからね >>948
お前が正しくない事を言っているのならば
お前の意思には関わらずお前は嘘をついている事になる
嘘つきとは厳然たる事実にすぎん 論理的(=客観的に検証可能)な正しさと主観的な正しさなのかによって話は変わってきますね 掲示板に書くのは独り言と言わない
チラシの裏にでも書いとけ >>951
主観的な正しさなどというものは存在しない
それはお前の願望にすぎん まだマウンティング完了できないのw
なさけなーーーw >>950
で、何を言いたいの?
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言うなら誰が嘘ついてるのかを根拠と共に書いてよ >>957
あなたがそう思うならあなたにとってはそうなんでしょうね >>956
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
お前は何を見てるんだ?気でも狂ったか?w >>961
そうかそれなら良かった
ところでお前が>>914なら言っておくが
俺はお前の事を嘘つきとは言ってないぞ
いや一度は言ったがw
前言撤回して正確に無知なだけだと認知しているからねw >>962
残念ながら私は>>914さんではありません… >>963
そうか違ったかwすまんなw
じゃあ誰なんだよ無駄に俺に絡んできてるやつw SQLは本当に初心者でして、MySQL+PHPで自分用のプライベートなファイルアップローダーを作ったことくらいしかないレベルです
でもデータベースは面白いしWeb技術としては必須なので少しずつ勉強しており、このスレも時々のぞいております >>964
絡んでしまったのは私なんですけど、あなたが想定してる人ではないようです
ごめんなさいね >>959
> 当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
日本語の理解も怪しい奴だったのか w >>964
> じゃあ誰なんだよ無駄に俺に絡んできてるやつw
心の声:もっと俺に絡め! 質問ですが
sqlserverにDB1、DB2、〜DB10があり中にtableAとtableBがありカラムは同じだとします。
tableAにPC1とPC2から同時にinsert処理するとトランザクションが発生しますが
↓のパターンの処理の場合は問題はおこりますか?
問題ないならパターン2でいこうと思いますがパターン1がいいことってありますか?
パターン1
DB1.tableAにPC1からinsert処理、
DB2.tableAにPC2からinsert処理を同時にする
パターン2
DB1.tableAにPC1からinsert処理、
DB1.tableBにPC2からinsert処理を同時にする ありがとうございます。
パターン2で考えてみます。 Left Outer Jonって複数一気に出来ない?
方法がわからないので、
(サブクエリ(サブクエリ(サブクエリ)))でやってるんだけど。 >>973
できるよ。構文上は外部結合した結果と結合するんだから、結合条件次第。 >>975
単にオラクル構文に慣れているだけでしょ。 よろしくお願いします。
前任者が突然退職しました。
SQL初心者ですが業務を引く次ぐことになりました。
今、行き詰まってます。
次のようなテーブルが有ります。
table 出勤表(
社員番号 serial,
日付 date,
出勤時間 timestamp,
退勤時間 timestamp,
遅刻 boolean,
早退 boolean,
欠勤 boolean
)
ここである期間内の、例えば
where 日付 between '2017-05-01' and '2017-05-14'
内における社員それぞれの遅刻、早退、欠勤の【有無】を求めたいのです。
出力例)
社員番号 遅刻 早退 欠勤
10 F F T
11 F F F
12 T T F
のような。
色々試行錯誤していますが、まず、ある期間内に遅刻があったかどうか、というところからもう分かりません。
ヒントだけでもかまいません。
助けてください。
Postgresqlです。 Postgresqlってboolean型にMAXとかMINとかとったらどうなる?
たとえば指定期間内の遅刻のMAXかMINとれば行けると思うけど
だめならCASEでTRUEのとき1、それ以外は0にしてSUMなりMAXなり取ればいけるんじゃね >>977
SELECT 社員番号,
SUM(CASE WHEN 遅刻 THEN 1 ELSE 0 END) > 0 as 遅刻,
SUM(CASE WHEN 早退 THEN 1 ELSE 0 END) > 0 as 早退,
SUM(CASE WHEN 欠勤 THEN 1 ELSE 0 END) > 0 as 欠勤
FROM 出勤表
WHERE 日付 BETWEEN '2017-05-01' AND '2017-05-14'
GROUP BY 社員番号 スレ違いでしたら恐縮です。
アプリケーションサイズが一番小さい
データベースソフトウェアを教えてください。
何か記憶だと、インストール不要でちょっとづかいに使える様な
超ちいさい(アプリのサイズが)、データベースソフトがあった記憶があるのですが・・
宜しくお願いいたします。 テキストファイルで、文字列検索すれば?
タダだし、簡単だぞ >>980
SQLiteはPHP5以降デフォルトでバンドルされています >>982
ありがとうございます。SQLiteで間違いありません。 >>982
すみません。やっぱりSQLiteではありませんでした。 >>987
いや御一行様じゃなくて>>985てめぇに対して言ってんだよ >>988
その返事だよ
その怒りのゴールは設定できてる? >>990
メンゴメンゴ
不快な日曜になったねW >>977-979
素直にbool_or( )でいいと思うが >>992
977 です。
bool_or() っていう関数、知りませんでした。
これで全く問題なく上手くできました♪
ありがとうございました。
※自分で書いた977が自分の環境(BathyScaphe)で読めません(泣)。なぜ? Left Outer Joinを複数回やる場合、
↓これで良いらしいですが、
Select G, H
From
(C Left Outer Join D
On E = F) Left Outer Join I
On J = K
今まで知らずに↓こうやって書いてました。
Select G, H
From
(Select A, B
From C Left Outer Join D
On E = F) Left Outer Join I
On J = K
これだと遅い? このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 426日 15時間 16分 41秒 レス数が1000を超えています。これ以上書き込みはできません。