• 締切済み

成績の合計を集計するSQLを考えています。

成績の合計を集計するSQLを考えています。 下記のようなテーブルをAccessで作成しました。 ID  科目 学期 中間 期末 学年 性別 0001  001  01  30   32  1  男子 0001  002  01  20  31  1  男子 0001  003  01  22  23  1  男子 0001  001  02  30  11  1  男子 0001  002  02  23  33  1  男子 0001  003  02  22  23  1  男子 ID  生徒を識別 科目 001=国語 002=数学 003=理科 学期 01=前期 02=後期 中間 科目のテスト結果を入力 期末 科目のテスト結果を入力 ※学期ごとに中間と期末があります。 下記のように学期別に同学年かつ同性の科目ごとの合計を集計する SQLを考えています。 期   性別  国語  理科  社会 前期  男子 200 250 300  前期  女子 110 200 340  後期  男子 150 230 360  後期  女子 170 250 350  学期別に集計をすることは出来たですが、さらに性別で分けることができませんでした。 アドバイスお願いします。 また、現在は SELECT [学年], iif( [学期]=1,"前期","後期") AS [学 期], Sum(IIf([科目]=1,[中間]+[期末],0)) AS [国 語], Sum(IIf([科目]=2,[中間]+[期末],0)) AS [数 学], Sum(IIf([科目]=3,[中間]+[期末],0)) AS [理 科] FROM テーブル名 GROUP BY [学年], [学期]; のようなSQL文を作成しました。

みんなの回答

  • tyurajima
  • ベストアンサー率28% (16/57)
回答No.1

単純に『Group By』 に性別を追加したらどうでしょう? Group By とは集計する単位になりますから。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL文でクロス集計をしたい

    アクセスでクロス集計のSQL文で作りたいと思っています。 このようなデータがあります 年月 支払先 数量 金額 201301 A 10 1000 201302 A 5 500 201302 B 20 2000 201301 C 10 3000 201303 C 15 1500 このデータを下記のように表示したいのですが、 分からなくて困っています。 支払先  データ   201301 201302 201303 A 数量     10      5 A 金額 1000 500 B 数量      20 B 金額 2000 C 数量     10 15 C 金額 3000 1500 合計 数量 20 25 15 合計 金額 4000 2500 1500 どのようにすれば実現出来ますか? 今は、 SELECT 支払先, "数量" AS データ, Sum(IIf([年月]='201301',[数量],0)) AS 201301, Sum(IIf([年月]='201302',[数量],0)) AS 201302, Sum(IIf([年月]='201303',[数量],0)) AS 201303, FROM T_データ GROUP BY 支払先; のクロス集計を 数量と金額、数量の合計と金額の合計でクロス集計をしたクエリを UNIONで実現しています。 出来れば数量と金額は1つのクエリで実現したいと思いますが方法があれば教えて頂きたい と思います。 どうぞ、よろしくお願い致します。

  • 集計についてのSQLの組み立て方

    SQLについての質問です。 MySQLを使っています。 1か月間の得意先別の入金の集計を取りたいと思っています。 表としては以下のような感じです。 ID  得意先名  現金計 振込計 相殺計 手数料計  合計 =========================================================== 001 aaaaaaa   30,000  40,000  25,000    840  95,840 002 bbbbbbb   10,000  20,000  30,000    420  60,420 SELECT * sum(nyukin) AS genkin FROM nyukin_meisai WHERE tokuisaki_id = '001' AND nyukin_kubun = '現金' AND uriage_bi BETWEEN '2014/05/01' AND '2014/05/31' SELECT * sum(nyukin) AS furikomi FROM nyukin_meisai WHERE tokuisaki_id = '001' AND nyukin_kubun = '振込' AND uriage_bi BETWEEN '2014/05/01' AND '2014/05/31' 以下続く と得意先毎/各区分ごとに一つひとつSQLを発行すればできるんでしょうけど、 これをひとつのSQLで実現したいと思っていますがSQLをどのように組み立て てよいものやら困っています。 case を組み込んだりしてもうまくいきませんでした。 どなたかご指導下さい。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 成績と性別毎の人数分布を集計するSQL文は?

    SQL文で成績と性別での人数分布を求めるクロス集計関数が出来ず困ってます。 サンプルとしては 学年 性別 評価(ABC) 1年 男  A 1年 女  A 1年 男  A 1年 男  B 2年 男  B 2年 女  C 欲しい出力としては各サンプル毎の人数です。 1年 男-A評価,男B評価,男C評価,女A評価,女B評価,女C評価 2年 男-A評価,男B評価,男C評価,女A評価,女B評価,女C評価 3年 男-A評価,男B評価,男C評価,女A評価,女B評価,女C評価 ・ ・ ・ という具合です。 以前は SELECT COUNT(*) AS 分布人数, 性別, 成績 FROM 成績 GROUP BY 年齢, 性別, 学年 HAVING 学年 = @がくねん ORDER BY 年齢,成績 というSQL文で1学年毎に抽出していました。 クロス集計で1つのSQL文で出力したいのですがいかがでしょうか?

  • オーダーNo.毎に集計するSQL

    オーダーNo.毎に集計するSQLを考えているのですが、少しSELECT文法で行き詰まってしまったので教えてください。 オーダーNo.毎にグループ化して、コード別の件数を集計します。 そして、コードが「10」のものが1件でもあれば表示する、というようなことを考えています。 SELECT ORDERNO, SUM(CASE WHEN CODE = 0 THEN 1 ELSE 0 END) AS CODE0, SUM(CASE WHEN CODE = 10 THEN 1 ELSE 0 END) AS CODE10, SUM(CASE WHEN CODE > 0 THEN 1 ELSE 0 END) AS CODEALL FROM DBORDER WHERE SUM(CASE WHEN CODE = 10 THEN 1 ELSE 0 END) > 0 GROUP BY ORDERNO ORDER BY ORDERNO このようにすると、WHEREのところで構文エラーになります。 ここをどのように変えれば意図どおりの動きをするようになるのか知りたいです。 よろしくお願いします。

  • 集計を求めるSQL文について

    こんにちは。 はじめまして、MMM-SRVと申します。 初めて投稿させて頂きます。 宜しくお願い致します。 MS Access2000をデータベースとしてASPでプログラムを組んでおります。 その中でどうしてもわからないので教えて下さい。 create table t1 ( age varchar(30), -- 年代 sex varchar(30), -- 性別(男'0'女'1') txt varchar(30) -- 氏名 ); というテーブルに age | sex | txt ----+-----+------   1 | 0  | A   2 | 0  | B   2 | 1  | C   1 | 1  | D   2 | 0  | E というデータがあるとして、ここから age | 男 | 女 ----+----+----   1 | 1  | 1   2 | 2  | 1 のように集計するSQL文をご教授頂けませんでしょうか。 postgrsであれば、以下のように組んでみるのですが case演算子がMS Accessでは使えないようなので…。 select age,sum(case when sex=0 then 1 else 0 end) as 男,sum(case when sex=1 then 1 else 0 end) as 女 from t1 group by age; 宜しくお願い致します。

  • 高校2年生ですが、成績の悪さで悩んでます

    高校1年生では遊びつつそれなりに勉強して、評定平均は4.2でした。 うちの学校は二学期制で、前期(1)(2)、後期(1)(2)、学年末の合計5回テストをして、前期(1)(2)で一回目の成績をだして、後期(1)(2)と学年末テストで二回目の成績が出るのですが、2年生になって遊ぶ時間が多くなり、1月期の成績は評定平均3.8とひどい成績をとってしまいました。さらに後期(1)のテストも、英語と国語以外は並みの点数しかとれませんでした。 自分の行きたい大学は推薦で最低でも4.3必要で、自分としては4.5はほしいなと思っているのですが、後期(2)と学年末の二回で成績を3.8から4.5まであげることは可能でしょうか?

  • 受験する高校について

    中二のものです。 受験生になったときに受ける高校について今悩んでいます。 内申は一年生のとき44でした。 委員会は前期で生活委員の学年責任者になりました。 テストの順位は 1年 1学期中間 5位 1学期期末 7位 2学期中間 1位 2学期期末 1位 学年末テスト 1位 2年 1学期中間 1位 でした。 今年は生徒会に入ろうと思ってます。資格は何も取っていません。 まだ一年生の成績しか出ていないとにどうかとはいえませんが どこの高校を目標にすればいいでしょうか? ちなみに塾の先生には大宮高校目指せば?といわれましたが・・・ あまり自信がないです。 無理なお願いで申し訳ありませんが、回答宜しくお願いします。

  • 試験の種類によって成績がぜんぜん違う

    うちのクラスには、中間・期末テスト(学期ごとにあり、教科書や参考書から出る。範囲は指定されている)がいいのに全国模試(大手予備校がやり、何が出るのかはわからない)はぜんぜんって言う人がいます。また、その逆で模試ならすごくいいのに中間・期末がだめという人も。両方とも、どうしてああなるんでしょうか? 理由を教えてください。 ・・・偏見かもしれませんが、前者は女子に多くて後者は男子に多いような気が(やっぱきめつけだ)。。。。

  • 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
  • 前期後期制の成績の付け方について

    私立高校へ通っている者なのですが、前期の中間、期末テストで赤点を半分以上取ってしまったら、後期のテスト関係なく、留年確定なのでしょうか? 一応各教科計算してみたところ、5段階評価の目安数字を見て1が数個ありました。

このQ&Aのポイント
  • 【DCP J562N】ハガキ印刷時に紙詰まりが発生するトラブルに関する質問です。
  • Windows10で無線LAN接続されている環境で、年賀状印刷時に紙詰まりが発生する問題について相談です。
  • ブラザー製品のインクジェットプリンター「DCP J562N」を使用している際に、ハガキ印刷時に紙詰まりが発生するトラブルが発生しています。
回答を見る

専門家に質問してみよう