データベース

全21673件中181~200件表示
  • MySQL8.0で中央値を求める方法

    Windows10 64bit環境でMySQL8.0を使い中央値を求めるため模索している素人です。 5.6ではユーザー定義変数を使った下記の方法で求めていました。 SELECT avg(t1.`金額`) as `金額` FROM ( SELECT @rownum:=@rownum+1 as `row_number`, d.`金額` FROM uriage d, (SELECT @rownum:=0) r ORDER BY d.`金額` ) as t1, ( SELECT count(*) as total_rows FROM uriage d ) as t2 WHERE 1 AND t1.`row_number` in ( floor((total_rows+1)/2), floor((total_rows+2)/2)); しかし、これを8.0で実行すると結果は求められるのですが、次のような注意が出ます 「式内でのユーザー変数の設定は非推奨であり、将来のリリースで削除される予定です」 その上ODBCで通らなくなりました。そこで何か他にないかと検索したところ下記のサイトにPreparedStatementを使っている別の方法がありました、 *ttps://qiita.com/nkojima/items/2c483d4ddbdb29439c87 この場合。注意はでませんがODBC(デフォルト設定)では通らなかったのでさらに検索したところ *ttps://stackoverflow.com/questions/1291152/simple-way-to-calculate-median-with-mysql&usg=ALkJrhjuCCaICL0uLguGt2oD4qbVM9cG7g にウインドウ関数を使った単一ステートメントの下記の方法が紹介されていました、 SELECT AVG(t1.`金額`) AS median_val FROM (SELECT `金額`, ROW_NUMBER() OVER(ORDER BY `金額`) AS row_num FROM uriage) t1, (SELECT COUNT(*) AS num_records FROM uriage) t2 WHERE t1.row_num IN (FLOOR((t2.num_records + 1) / 2), FLOOR((t2.num_records + 2) / 2)) MySQLで100万件のレコードを対象に試したところ上記の変数を使った2件の方法より同等か少し遅い結果となりました。それでも標準SQLでの方法よりはるかに速いのですが・・・ また、以前使っていた32bit5.6に比べて上記2件の方法が遅いことがわかりました(平均3.0と1.9secが3.188と2.806secに)。・・・ とあるサイトで8.0ではCOUNT(*)が遅い原因の一つと考えられているとあったのででCOUNT(カラム名)に変更 (1)1.670 (2)1.640 (3)1.919 となりウインドウ関数を使った単一ステートメントの方法が一番遅い結果となりました。・・えっと!思いそこで前々回に質問しました(削除済み)・・平均値は前回のバッテリーモードから変更して測定し直しました。 さら検索していたら単一ステートメントの方法は見つかりませんでしたが、あるサイトにwith句をを使った方法が載っていました(試したところクエリが成立せず?)。1部を改変し下記クエリを試してみました。 SELECT COUNT(*)+1 INTO @rowindex FROM uriage; WITH i AS (SELECT `金額`,ROW_NUMBER() OVER (ORDER BY `金額`) AS rowindex FROM uriage) SELECT AVG(`金額`) AS median_duration FROM i WHERE i.rowindex IN (FLOOR(@rowindex / 2) , CEIL(@rowindex / 2)); この方法では、COUNT(カラム名)よりCOUNT(*)の方が速い結果となりました。 (4)COUNT(カラム名)・・1.906   (5)COUNT(*)・・1.547・・・・これでまた混乱を増加 他のDBからのODBC経由でSQLを実行するスクリプトを組んでいるので(3)の単一ステートメント方法以外にも、(2)や(5)の方法を参考に最初にCOUNTするクエリで値を取得し変数使い次に計算式でクエリを整形し直してから発行する2度手間のスクリプトを組んで中央値を取得していましたが、投稿の後調べてみるとODBCのシステムDSNの設定でconnectionのAllow multiple statementsにチェックで複数ステートメントの発行が可能でした。・・知らないことが多すぎる! もし他に別の方法があればと思い再々投稿しました。

  • 名寄せとは何でしょうか?

    名寄せについて質問させていただきます。 一つのDBにおいて、同一の意味を持つレコードを一つに統一させるということでしょうか? また、それはシステムで自動的に行うことは似たような名前などがあり、難しいと思うのですが、最終的な重複チェックは手作業で行うのでしょうか?

  • DBとバッチ処理、オンライン処理の関係について

    DBの登録や更新や削除をする際に利用するバッチ処理とオンライン処理の使い分けについてについて、お聞きしたいです。 バッチ処理は決められた時間に起動する処理だと認識しています。オンライン処理は求められたらその場でする処理だと認識しています。もしDBに登録や更新、削除する情報がある場合は、なるべくオンライン処理では行わないほうがいいのですか? もしその場合、対象のデータはファイルや更新用のDBなどを用意して一時的に保存しておいてバッチ処理にて行うということでしょうか?

  • psycopg2経由とpsql経由、違いますか?

    Python3で、psycopg2を使用してPosgtreSQLに接続しようとしています。(Windows10環境です) 実際にpythonプログラムでinsertしてデータを登録したりしているのですが、 PostgreSQLでコマンドプロンプトからpsqlを使って、同じデータベースにアクセスしているのですが、データが登録できていません。 すべて同じPC上で動作させているのですが、 Python3でpsycopg2経由でアクセスしているデータベースと psql経由でアクセスしているデータベースが別という事はあるでしょうか? (もちろん同じデータベース名でアクセスしています。) 何かアドバイス頂けないでしょうか、どうぞよろしくお願いします。

  • mysqlについて

    データベースについて mysqlで webぺーじの管理をしようと思い、勉強し始めたのですが、 まず何を準備していいかわからず困っています。 ssmsとhttps://www.microsoft.com/ja-jp/sql-server/sql-server-downloads で学習できますでしょうか?

  • SQL select 2つの日時データの結合

    SQLで2つの日時データについて、片方の日時に一番近い別データのレコードを結合して抜き出したいです。 <Table1> 日時A data1 2020/07/01 10:00:00 1000 2020/07/01 11:00:00 1000 <Table2> 日時B col1 2020/07/01 9:50:00 AAA 2020/07/01 10:05:00 BBB 2020/07/01 11:10:00 CCC 上記2つのようなデータがある場合、下記のようなSELECT結果を取得したいです。 日時A data1 日時B col1 2020/07/01 10:00:00 1000 2020/07/01 9:50:00 AAA 2020/07/01 11:00:00 1000 2020/07/01 10:05:00 BBB この場合、どのような構文を使用したらよいでしょうか? お手数ですが、よろしくお願いいたします。

  • Oracle Databaseについて

    おはよございます。 データベースアプリケーションを作成しようと思っています開発初心者です。 Windows10 ProマシンにOracle環境を作りたいのですが 無料のOracle DatabaseとOracle Clientはあるのでしょうか。 お手数おかけしますが、ご存知の方いらっしゃいましたら 教えてください。 よろしくお願いいたします。

  • 媒体とその他

    本製品はWindows Server 2019のライセンスにWindows Server 2016 Standardの媒体とインストールサービスを付与した製品です。 媒体とはなんでしょうか? 文章全体はどういう意味でしょうか?

  • xp_cmdshell はmacで使えるのか。

    MacでSQLserverの勉強をしてます。 xp_cmdshellは、macでは使えないのでしょうか。 https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql?view=sql-server-ver15

  • PostgreSQLログイン中にOSコマンド

    Oracleだと、SQLplusログイン中に、!をコマンドの前につければ、OSコマンドが使えます。 PostgreSQLで、ログイン中には同じような方法はありますか? copyコマンドで、CSVファイルに出力されたか確認する場合、lsコマンドでファイルの存在を確認したいのですが。 PostgreSQL初心者です。 ご存知の方いらっしゃいました、宜しくお願いします。

  • psqlでファイルに記載した命令を実行できません。

    psqlを使っています。 ファイルに10行ほどのinsert命令を書いて、 psqlにて「\i /Users/・・・・省略(ファイルパス)・・・・)/aaa.sql;」 を実行するとエラーがでて実行できません。 /Users/・・・・省略(ファイルパス)・・・・)/aaa.sql:1: error: invalid command \rtf1 ・ ・ psql:/Users/・・・・省略(ファイルパス)・・・・)/aaa.sql:17: error: invalid command \'7b psql:/Users/・・・・省略(ファイルパス)・・・・)/aaa.sql:18: error: invalid command \'b7 psql:/Users/・・・・省略(ファイルパス)・・・・)/aaa.sql:18: ERROR: syntax error at or near "{" LINE 1: { こんな感じでエラーがでてしまいます。 命令文を1行ずつ手打ちで実行するとできるのですが、なぜでしょうか。 同じような経験のある方など教えていただけるとありがたいです。

  • MySQLを起動する時はどうするのですか?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 今、画像の様にMySQLをC¥直下に解凍しました。 起動する時はどうするのですか? サーバーを立てないとダメなのでしょうか? ご多忙中恐れ入ります。 ご回答の程、宜しくお願い申し上げます。

    • ベストアンサー
    • jump7799
    • MySQL
    • 回答数1
  • MySQLのインストール方法を教えてください。

    いつも大変お世話になり誠にありがとうございます。 標記の件。 画像の所から前に進めません。 どうしたら良いでしょうか? ご多忙中恐れ入ります。 宜しくお願い申し上げます。

    • ベストアンサー
    • jump7799
    • MySQL
    • 回答数1
  • アクセスログのプライマリキー

    現在プログラミングの研修中です。 研修の一環で社内PCのアクセスログを管理するプログラムを作るよう言われました。 現在SQLserverのテーブルに 日付、時刻、PC名、ログオン情報、起動処理情報、備考の6カラムを作っており、PC名にプライマリーキーを設定しておりましたが1か月単位で出せない事に気づきました。 プライマリーキー自体は実装するように上司に言われているのですがどれに設定すると良いのかわからなくなってしまいました。 知恵をお貸しいただければと思います。

  • 【達人に学ぶSQL徹底指南書】についての質問

    【達人に学ぶSQL徹底指南書】という本の以下のSQLについての質問です。 ---------------------------------------- --【95ページのSQL】 --算数の点数が80点以上かつ --国語の点数が50点以上の生徒を取得 ---------------------------------------- SELECT   DISTINCT student_id FROM   TestScores TS1 WHERE   subject IN('算数','国語')   AND NOT EXISTS(     SELECT       *     FROM       TestScores TS2     WHERE       TS2.student_id = TS1.student_id       AND 1 = CASE WHEN subject = '算数' AND score < 80 THEN 1            WHEN subject = '国語' AND score < 50 THEN 1            ELSE 0 END   ) このSQLの ---------------------------------------------------------- AND 1 = CASE WHEN subject = '算数' AND score < 80 THEN 1      WHEN subject = '国語' AND score < 50 THEN 1      ELSE 0 END ---------------------------------------------------------- は ---------------------------------------------------------- AND ((subject = '算数' AND score < 80)   OR (subject = '国語' AND score < 50)) ---------------------------------------------------------- と同じ意味ですよね? CASE式を使っている意味は何かあるのでしょうか? 他のSQLにも同様にORに書き換えられそうなところがあったので何か意味があるのかなと思ったのですが。

  • postgreSQL11の挙動

    クライアント側で作成したデータベースがサーバ側では見えないのですが、そういうものですか?

  • MySQLに接続できない

    Xampp Controll Panel を使ってMySQLに接続しようとしていますが、Apache サーバーには接続できてもMySQLへは出来ません。 スタートボタンを押すとしばらくは接続されているみたいなのですが、すぐに切れてしまいます。メッセージは添付の写真のとおりです。 昨日まではちゃんとできていたのに、今日出来ないのは、おそらくVisual Studio Code をインストールしたのが原因ではないかと思い、これをアンインストールしてPC(Windows10)を再起動してみましたが、ダメでした。 どなたか解決方法をご存知でしたら教えてください。よろしくお願いします。

  • INSERT INTOステートメント構文エラーにつ

    初めましてご教授よろしくお願いします。 ■環境 office365(ExcelとAccess) INSERT INTOステートメント構文エラーについての質問です。 著:今村ゆうこさんの『Excel&Access連携 実践ガイド』を読みながら現在作業を しています。 やりたいことはExcelのデータをaccessに書き込むことです。 エラー内容は「INSERT INTO ステートメントの構文エラーです。」と表示されます。 しかし、何度も見直して見ましたが、どこがエラーの原因かわかりません。 VBAは基本的部分が分かる程度で、現在勉強中です。 正直手詰まりといった感じで何を修正すれば良いかわからないというのが現状でこちらに質問させていただきました。 皆様の知恵を貸してください。どうかよろしくお願い致します。 ▼Excelデータ Product Name / Merchant SKU / ASIN / Condition / qty ○○(商品名) / テキスト / テキスト / テキスト / 個数 strSQL = _ "INSERT INTO テーブル(" & _ "Product Name, " & _ "Merchant SKU, " & _ "ASIN, " & _ "Condition, " & _ "qty) " & _ "VALUES(" & _ "'" & Cells(n, 1) & "', " & _ "'" & Cells(n, 2) & "', " & _ "'" & Cells(n, 3) & "', " & _ "'" & Cells(n, 4) & "', " & _ Cells(n, 5) & ");" ▼書籍に記載のあった例(添付CDのデータを丸々コピペしています) strSQL = _ "INSERT INTO 販売管理(" & _ "商品コード, " & _ "商品名, " & _ "売上日, " & _ "数量, " & _ "売価, " & _ "製造場所, " & _ "定価, " & _ "原価, " & _ "取引先, " & _ "営業所, " & _ "社員名) " & _ "VALUES(" & _ "'" & Cells(n, 1) & "', " & _ "'" & Cells(n, 2) & "', " & _ "#" & CDate(Cells(n, 3)) & "#, " & _ Cells(n, 4) & ", " & _ Cells(n, 5) & ", " & _ "'" & Cells(n, 6) & "', " & _ Cells(n, 7) & ", " & _ Cells(n, 8) & ", " & _ "'" & Cells(n, 9) & "', " & _ "'" & Cells(n, 10) & "', " & _ "'" & Cells(n, 11) & "');" ▼全体の文 Option Explicit '変数の宣言を強制する '---ACCESS接続用 Private adoCn As Object 'ADOコネクションオブジェクト Private adoRs As Object 'ADOレコードセットオブジェクト Private strSQL As String 'SQL文 Sub DBconnect(flg As Boolean) 'DB接続プロシージャ Dim DBpath As String DBpath = ThisWorkbook.Path Set adoCn = CreateObject("ADODB.Connection") 'ADOコネクションオブジェクトを作成 If flg = True Then Set adoRs = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクトを作成 adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & DBpath & "\SampleData.accdb;" 'Accessファイルを開く End Sub Sub DBcut_off(flg As Boolean) 'DB切断プロシージャ If flg = True Then adoRs.Close 'レコードセットのクローズ adoCn.Close 'コネクションのクローズ Set adoRs = Nothing 'オブジェクトの破棄 Set adoCn = Nothing End Sub Sub DBinsert_all() 'DB一括書込 Dim start_i As Long, end_i As Long, n As Long If MsgBox("一括書込を実行しようとしています。続けますか?", vbOKCancel) <> 1 Then 'メッセージ Exit Sub 'OK以外なら終了 End If If MsgBox( _ "Accessの「販売管理」テーブルのデータを一度削除し、" & vbCrLf & _ "現在このシートにある情報のみが書き込まれます。" & vbCrLf & _ vbCrLf & _ "実行してよろしいですか?", vbOKCancel + vbExclamation, "一括書込み") <> 1 Then 'メッセージ Exit Sub 'OK以外なら終了 End If start_i = 2 'スタート行 end_i = Range("A1").End(xlDown).Row '最終行を取得 Call DBconnect(False) 'DB接続 On Error GoTo Err_Handler 'エラーが起きたら"Err_Handler"へ adoCn.BeginTrans 'トランザクション開始 strSQL = "DELETE FROM 販売管理;" 'テーブル内データを全削除 adoCn.Execute strSQL '削除実行 For n = start_i To end_i 'データのある行を繰り返す strSQL = _ adoCn.Execute strSQL '書込実行 Next n adoCn.CommitTrans 'トランザクション終了(確定処理) Call DBcut_off(False) 'DB切断 MsgBox "正常に完了しました" Exit Sub

  • 大きなデータの保存の仕方

    データ解析、に興味があります。 データといってもエクセルに入れていますが、エクセルには制限があるみたいです。 https://support.office.com/ja-jp/article/excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3 これを超えるデータはどんなソフトを使うんでしょうか? ビッグデータが話題になっていますが、ビッグデータを保存するにはどうするのか。 家のパソコンでもできるのかどうかなど、教えてください。

  • VCFファイルをCSV形式にエクスポートする方法

    私は私のvcf、vcardファイルをcsvに変換したいと思っています。 PCに連絡先を.vcf形式でコピーしたい。 .csv形式が必要です。 .vcfを.csvにエクスポートする方法は? 誰でも助けてくれます。