質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2065閲覧

SQLから標準偏差を求める

12asa

総合スコア4

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/07 16:10

編集2019/12/08 04:37

前提・実現したいこと

学校の課題です。pythonからSQLを引用?して、標準偏差を求めたいのですが、よくわかりません。
ほぼ初心者で、初歩的なことしかわからず、またいろいろ調べてもわかりませんでした…
お力添えしていただけるとありがたいです。

問題(課題内容)

短距離走の標準偏差を求めよ

###table内
+-----+----------------+------+--------+------+
| id | name | tan | jyotai | hand |
+-----+----------------+------+--------+------+
| 001 | Aichi Hanako | 19.3 | 20 | 10 |
| 002 | Kariya Takako | 18.9 | 18 | 20 |
| 003 | Miyoshi Fumiko| 17.5 | 23 | 15 |
+-----+----------------+------+--------+------+

試したこと

・pythonで試したこと

import sqlite3 conn = sqlite3.connect('testdb.sqlite3') cur = conn.cursor() cur.execute('select hensa = avg(tan*tan)-avg(tan)*avg(tan), sqrt(hensa) from stest') data = cur.fetchone() print('これまで入力されたデータの短距離走の標準偏差は' + str(data[0]) + 'です') conn.close() print('終了します') ーーーーーーーーーーーーー (結果) >>> == RESTART: C:\Users\s2170861\Documents\授業\3年後期\木3 ICTと学校環境論\12月5日\hensa.py == Traceback (most recent call last): File "C:\Users\s2170861\Documents\授業\3年後期\木3 ICTと学校環境論\12月5日\hensa.py", line 7, in <module> cur.execute('select hensa = avg(tan*tan)-avg(tan)*avg(tan), sqrt(hensa) from stest') sqlite3.OperationalError: no such column: hensa

・SQLで試したこと①

> select avg(tan*tan)-avg(tan)*avg(tan) as bunsan, sqrt(bunsan) from stest; ーーーーーーーーーーーーーー >no such function: sqrt

・SQLで試したこと②

> select avg(tan*tan)-avg(tan)*avg(tan) as bunsan from stest; +--------------------+ | bunsan | +--------------------+ | 0.5955555555555065 | +--------------------+ > select bunsan, sqrt(hensa) from stest; ーーーーーーーーーーーーーー >no such column: bunsan

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

12asa

2019/12/08 04:35

修正しました。アドバイスありがとうございます。 他に何かあれば、訂正しますので、よろしくお願い致します。
dameo

2019/12/08 10:15

学校の課題であれば、先生に聞くべきです。 やり方はいくつかありますが、授業で習った方法を組み合わせれば解けるように教えているはずなので。
12asa

2019/12/09 07:00

授業で習っていない内容で、いろいろやってみてもわからなかったので、伺っている所存です。 習ったことは、 ・sqlのテーブルの欄の呼び出し ・平均値の求め方 ・sqlのテーブル作成 ・最大値、最小値の求め方 ・算術演算(四則演算のみ) ・比較演算 ・null ・update ・rollback ・commit ・autocommit ・distinct ・group by ・having ・orderd by ・delete については習いました。また、標準偏差は√(求めたい偏差の平均の2乗 - 求めたい2乗の平均)であることはヒントとしていただきました。 (ルートの計算や累乗の計算は習っていません。) →インターネットで調べ、 ・累乗の計算は、**でできること。(もしくはpower関数?) ・ルートはsqrt関数を使って求めること が出てきて、実践してみましたが、ダメだったので困っています。 また、自分も教授に聞きたいところですが、先ほどのヒント以上のものを出してくれそうにありません。ので、ここで聞いてみようと思いました。 状況説明が不足しており、大変申し訳ありません。
dameo

2019/12/09 08:42

同じ内容を質問し、ここで聞いて先生に聞くべきだと言われたことを伝えればいいだけです。 それで教えてくれないのなら、それはあなたが自分で考える必要のあることだからだと思いますよ。 それを他人が教えてしまったら、それこそ先生があなたを指導できなくなってしまいます。 平方根の計算を習ってないとか教えてもらってないうちに入りませんし、私の感覚では説明は十二分にされていると思います。 繰り返しますが、どうしても分からない旨を伝えて先生に聞いてください。
12asa

2019/12/09 17:11

(ここでいう話でもないと思いますが…) 先生の方針として、わからないときは、まず、自分で調べてやってみる、その後にわからない場合は、基本的には授業中に聞くシステムのため、課題は自分でやってくるものだというスタンスがあります。なので、次の授業で質問をしてしまうと、課題の提出期限が過ぎてしまうため、先生に聞くことができない環境なので、困っています。 また、私も、課題を誰かにやってほしいとか、そういうつもりもなく、ずっと手詰まりだと、自分で考え続けるのも無駄な時間ではないかと思っていたところに、「15分考えてもできなかったことは聞いてみよう」と書いてある、このサイトを見つけたため、投稿に至りました。 そして、もし、ヒントやつまずいているポイントなど教えていただければ幸いだと思ったのでお伺いしている所存です。 自分自身の理解不足もあるかもしれませんが、3時間、授業のプリントや教科書をみて、インターネットで調べた結果できなかったので… たしかに、自分で考えてやってみることは大切だと思います。ですが、先生が考えてほしいことを何時間もかけて考え続けるのは、それは個人的には無意味な時間だと思います。 かといって課題をわからないままで出すのは気がひけます。 また、もし勘違いされていなければ問題ないのですが、平方根や累乗の計算自体を習わなかったのではなく、SQL内での構文等の計算方法を習っていないという意味です。(一応、念のための確認なので、認識が合っていればお気になさらないでください。)
dameo

2019/12/09 17:23

あなたの課題が出来なくて単位が危なくなってもあなた以外困る人はいません 15分~と謳ってるのはこのサイトを運営してる人であって、回答してる人はそんなことは思っていません 3時間くらいで質問書いてここでやり取りするくらいなら、自分で解決した方が早いです SQL内での構文はSELECT句の説明をしている以上そこで終わりです 累乗は使わないし、平方根は「SQL 平方根」でググればSQRT関数がすぐ見つかります 教授ということは研究室にはいるはずで、学生ならいつでも聞きにいけます 3回目ですが、どうしても分からない旨を伝えて先生に聞いてください ここで問答する時間の方が、私もあなたも無駄以外の何者でもありません
dameo

2019/12/09 18:41

あ、sqlite3だったんですね。タグの方からSQL Serverだと思ってました。 一応言っておくと、sqlite3は標準でsqrt関数を持っていません。 sqlite3でやりたいのならpythonのmath.sqrtを使ったほうが簡単です。 他の方法だと、sqlite3自体を拡張する方法。 sqlite3以外のDBを使えば標準SQLのsqrtがあるので簡単に求まります。 pythonだと import math して math.sqrt(値) とするだけ 勘違いしてたのもあるので、答えまで載せておきます。 ■Sqlite3用データ構築SQL -- DDL for sqlite3 create table stest(id text,name text,tan real,jyotai real,hand real); -- load data insert into stest(id, name, tan, jyotai, hand) values('001','Aichi Hanako',19.3,20,10); insert into stest(id, name, tan, jyotai, hand) values('002','Kariya Takako',18.9,18,20); insert into stest(id, name, tan, jyotai, hand) values('003','Miyoshi Fumiko',17.5,23,15); ■Python import sqlite3 import math conn = sqlite3.connect('testdb.sqlite3') cur = conn.cursor() cur.execute('select avg(tan*tan)-avg(tan)*avg(tan) as hensa from stest') data = cur.fetchone() print(math.sqrt(data[0]))
12asa

2019/12/10 03:04

こちらこそ、いろいろ説明不足が多く、ご迷惑をおかけしました。 sqliteとsql severが別物だったところが間違いだったのですね。ありがとうございます。理解できました。 一度pythonからimport mathで自分なりにやってから回答を参考にしたいと思います。(自分でしっかり書けるようにするために頑張ります。) 本当にお手数おかけしました。ありがとうございます。
12asa

2019/12/10 15:03 編集

``` import sqlite3 import math conn = sqlite3.connect('testdb.sqlite3') cur = conn.cursor() cur.execute('select avg(tan*tan)-avg(tan)*avg(tan) as hensa from stest') data = cur.fetchone() print('これまで入力されたデータの短距離走の標準偏差は' + str(math.sqrt(data[0])) + 'です') conn.close() print('終了します') ``` ``` (結果) これまで入力されたデータの短距離走の標準偏差は0.7717224601859832です 終了します >>> ``` 解決し、なぜエラーが出ていたのか理解することができました。 ありがとうございました。
guest

回答1

0

自己解決

import sqlite3 import math conn = sqlite3.connect('testdb.sqlite3') cur = conn.cursor() cur.execute('select avg(tan*tan)-avg(tan)*avg(tan) as hensa from stest') data = cur.fetchone() print('これまで入力されたデータの短距離走の標準偏差は' + str(math.sqrt(data[0])) + 'です') conn.close() print('終了します')
(結果) これまで入力されたデータの短距離走の標準偏差は0.7717224601859832です 終了します >>>

投稿2019/12/10 15:04

12asa

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問