- ベストアンサー
MySQLで合計と小計の計算方法を教えてください パート2
MySQLで合計と小計の計算方法を教えてください パート2 name | kamoku | tensu テーブル:testdb --------------------------- 001 英語 95 001 国語 90 001 理科 75 001 社会 73 001 算数 62 002 英語 93 002 国語 87 002 理科 78 002 社会 71 002 算数 68 -------------------------------- 30人位いるのですが、やりたい事は以下になります。 基準点数(好きな点数を入力)$kijyunt sql = select sum(tensu) as stensu, sum(tensu)-(select count(*) * $kijyun from testdb) as hensa from testdb where tensu >= 70 全科目70点以上の点数を合計し、全体のレコード×70の点数を引き算したいのです。 しかしながらうまく表示しません。どこが悪いかご指摘お願いします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- MySQLで合計と小計の計算方法を教えてください
SQLで判らないことがあります。 生徒NO | 科目 | 点数 テーブル:testdb --------------------------- 001 英語 95 001 国語 90 001 理科 75 001 社会 73 001 算数 62 002 英語 93 002 国語 87 002 理科 78 002 社会 71 002 算数 68 -------------------------------- 30人分位あり、(全員の5科目の合計)- (国語と社会の合計)=(表示したい数値)にしたいのです。 $sql = "select SUM(点数) as goukei,SUM(点数)-(select SUM(点数) from testdb where 科目=国語 and 科目=社会)as shoukei from testdb "; また、基準点数を儲けて合計点数-基準点数も求めたいのです。$kijyunは変数。 $sql2 = "select SUM(点数) as goukei,SUM(点数)-(select count(*) * $kijyun from testdb )as kijyunten from testdb "; 上記で結果が得られません。教えてください!
- ベストアンサー
- MySQL
- MySQLのデータをPHPで多次元連想配列にしたい
MySQLのデータを多次元連想配列にする方法を教えて下さい。 下記のような多次元連想配列のデータがあります。 これと同様のMySQLに登録されたデータから多次元連想配列を作りたいと思います。 $test= array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90"), ); print_r($test); ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- これと同様のデータをMySQLに作成します。 テーブル名:test 列名:id,kamoku,tensu MySQLからデータを取得 try { $dbh = new PDO($DSN , $DBUSER , $DBPASS); $query = select * from test $stmt = $dbh->prepare($query); $stmt->execute(); while($result = $stmt->fetch(PDO::FETCH_ASSOC)) { $id = ($result['id']); $kamoku = ($result['kamoku']); $tensu = ($result['tensu']); } } catch(PDOException $e) { print "Error!: " . $e->getMessage() . "<br>"; die(); } このソースの中で何らかの処理をして print_r($test); を実行したときに ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- というような、文頭で記載したものと同じ結果を得たいと思います。 while内で print_r($result);を行うと1行ずつ下記のような連想配列 Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) が取得できているのでこれを連結させて $test_sample=<<<EOF array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") EOF; という配列の中身は作ることができました。 (1)ケース1 $test=array($test_sample); print_r($test); としてもダメで、 Array ( [0] => array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") ) というようにうまく多次元連想配列になっていません。 (2)ケース2 $test='array('.$test_sample.')'; print_r(test); としてみたところ、 array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90")) というように配列ではなく単なる文字列として表示されてしまいます。 配列の中身を変数で扱う時には特別な記述法などがあるのでしょうか?
- ベストアンサー
- PHP
- PHP+MySQLから結果セット取得後の計算方法
PHP+MySQLから結果セット取得後の計算方法を教えてください。 イメージは以下になります。 以下、testtable とします。 生徒|国語|算数|理科|社会 A 60 80 90 60 B 80 60 70 65 C 95 30 50 90 D 100 95 85 90 そこで、国語が80点以下の生徒を検索し、抽出した生徒の算数平均点数を導きたいのです。 //国語が80点以下の生徒を抽出 $sql="SELECT * from testtable WHERE 国語<=80"; $rst= mysql_query($sql); 上記で国語が80点以下の生徒を検索出来たと思うのです。 イメージは下記になります。 生徒|国語|算数|理科|社会 A 60 80 90 60 B 80 60 70 65 算数の平均を求めるので、(80+60)/2の式を書きたいのです。 平均の2は、mysql_num_rows($rst)で導き出せるのですが、 (80+60)の部分がわかりません。 while ($col = mysql_fetch_array($rst)){ $sum=$sum+$col[算数];} $body.= "平均".$sum/mysql_num_rows($rst)."点"; でよいでしょうか。 ご教授願います。
- ベストアンサー
- MySQL
- 合計の出し方
よろしくお願いいたします。 プログラミングの勉強中です。 国語:78 算数:94 理科:68 社会:70 英語:75 合計点は385点です。 と表示されるプログラムを作り、数字は変えられるようにscanfを使用します。 自分で以下のように作ってみたのですが、合計だけがめちゃめちゃな数で出て来てしまいます。 どこが間違っているか教えていただけますか? #include<stdio.h> main() { int kokugo; int sansuu; int rika; int syakai; int eigo ; int sum = kokugo+sansuu+rika+syakai+eigo; printf("国語:"); scanf("%d",&kokugo); printf("算数:"); scanf("%d",&sansuu); printf("理科:"); scanf("%d,&rika"); printf("社会:"); scanf("%d,&syakai"); printf("英語:"); scanf("%d,&eigo"); printf("合計点は%d点です。",sum); }
- ベストアンサー
- C・C++・C#
- エクセルの質問です。
エクセル2003を使用しています。 元データには A B(国語点数) C(算数点数) D(社会点数) E(理科点数 F(英語点) G(合計) 1 名前(1) 90 85 70 100 20 365 2 名前(2) 85 20 40 70 50 265 3 名前(3) 50 90 60 70 80 350 というデータを A B C 1 名前(1) 国語 90 2 算数 85 3 社会 70 4 理科 100 5 英語 20 6 合計 365 7 名前(2) 国語 85 8 算数 20 9 社会 40 10 理科 70 11 英語 50 12 合計 265 ・ ・ ・ となるように表示していきたいのですが… ただのセルのコピーでは人が連続してコピーできませんでした。 何かいい方法があるかたはご教授ねがいます。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- mysqlのスマートな書き方
MySQL5.1とPHP5を使っています。 phpからmysqlのtestテーブルにアクセスして点数順に生徒名一覧を作成したいと思っています。 イメージとしてはこのような感じです。○○○は名前になります。 90点以上 ○○○ ○○○ 80点以上 ○○○ ○○○ ○○○ 70点以上 ○○○ ○○○ ○○○ ○○○ このような一覧を表示するため、下記のように作成したところ上記のような表示をしてくれました。 しかしながら、同じmysql_queryを何度も使っていますし、DBに負担が掛かりそうな気がします(本当に負荷があるのかは分かりませんが・・・) もっとスマートな書き方はないものでしょうか。 よろしくお願い致します。 echo "90点以上"; $rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn); while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){ if ($res['tensu'] >= 90){ echo $res['name']; echo "<br>" ; } } echo "80点以上~90点未満"; $rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn); while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){ if($res['tensu'] >= 80 and $res['tensu'] < 90 ){ echo $res['name']; echo "<br>" ; } } echo "70点以上~80点未満"; $rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn); while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){ if($res['tensu'] >= 70 and $res['tensu'] < 80 ){ echo $res['name']; echo "<br>" ; } }
- ベストアンサー
- MySQL
- 2つの異なるテーブルを和結合し、重複のない名前だけ出力する方法
2つの異なるテーブルを和結合し、重複のない名前だけ出力させるSQLを書きたいのですが どこが間違っているでしょうか? select distinct name from ( select name from test1 union select name from test2 ) ; test1テーブル name 国語 算数 理科 社会 test1テーブル name 国語 体育 家庭科 社会 結果 name 国語 算数 理科 社会 体育 家庭科
- 締切済み
- PostgreSQL
- sqlのVIEWの作り方
mysqlでviewを作ろうと考えています。 書籍を調べて3日くらい格闘していましたが挫折してしまい アドバイスをいただきたく、質問いたします。 テーブル名: kamoku kamoku_id name ------------------ 001 国語 002 算数 003 理科 004 社会 テーブル名: siken siken_id siken_name kamoku_id1 kamoku_id2 kamoku_id3 ------------------------------------------------------- 000011 試験1回目 001 002 003 000012 試験2回目 001 003 004 000013 試験3回目 001 002 004 000014 卒業試験 003 004 null この2つのテーブルからVIEWを作りたいと考えています VIEW名 siken_kamoku siken_id siken_name kamoku_id1 kamoku_id2 kamoku_id3 ------------------------------------------------------- 000011 試験1回目 国語 算数 理科 000012 試験2回目 国語 理科 社会 000013 試験3回目 国語 算数 社会 000014 卒業試験 理科 社会 科目名を一回で取得できるようなViewを作りたいのですが CREATE VIEW view_siken_kamoku ( siken_id, siken_name, kamoku_name1, kamoku_name2, kamoku_name3 ) AS SELECT siken.siken_id, siken.siken_name, kamoku.kamoku_name, kamoku.kamoku_name, kamoku.kamoku_name WHERE siken_kamoku_id1 = kamoku.kamoku_id AND siken_kamoku_id2 = kamoku.kamoku_id AND siken_kamoku_id3 = kamoku.kamoku_id; 以上の文ですとエラーがでます。 どのような文にすれば、上記のようなVIEWがえられますでしょうか おたすけてください
- ベストアンサー
- MySQL
- 二次元配列のソート方法がわかりません
下記のデータがあったときに、点数の低い人だけを表示するプログラムを作りたいのです。 ■データ <?php $data[] = array("kamoku" => "国語", "value" => "80", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "算数", "value" => "98", "name" => "山田","class"=>"4組"); $data[] = array("kamoku" => "国語", "value" => "70", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "理科", "value" => "10", "name" => "鈴木","class"=>"2組"); $data[] = array("kamoku" => "国語", "value" => "68", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "理科", "value" => "35", "name" => "斉藤","class"=>"2組"); $data[] = array("kamoku" => "国語", "value" => "18", "name" => "鈴木","class"=>"2組"); $data[] = array("kamoku" => "理科", "value" => "90", "name" => "島田","class"=>"5組"); ?> ■結果(一番低い人だけを表示) 国語 18点 鈴木 算数 98点 山田 理科 10点 鈴木 どのようにソートすればよろしいでしょうか? 教えてくださいますようお願いします。
- ベストアンサー
- PHP
お礼
今回は、うまくいきました。ありがとうございました!