No.9ベストアンサー
- 回答日時:
>これは、2004/1/1から2004/12/31までの最大金額を抽出する場合には、『2004』ということでしょうか。
そうです。
年なのか年度なのかわからなかったので、柔軟にするためにこうしました。
たとえば、2004/03/01というレコードのyearフィールドは、
年度であれば2003となり、年であれば2004が入るものとしています。
今回は「年」でいいということですので、フィールドを使う代わりに、関数で年だけを抜き出しても構いません。
SQL解説
select t1.ymd, t1.price
from tbl AS t1
where t1.price=XXXX
order by t1.ymd;
だと、売上金額がXXXXであるレコードをすべて表示する。
このSQLのXXXXを実行時に変化させることで、目的のレコードが拾える。
t1.price=(select max(t2.price) from tbl as t2 where t2.year=t1.year)
XXXXを実行時に変化させるためのサブクエリー。
「今対象としているレコードの年(year)と同じ年のレコードの内、売上金額が最大のもの」
という意味。
組合わせると、
「自分と同じ年を持つレコードの内の最大の売上金額を持つレコード」
が出力対象となります。
この回答への補足
非常に丁寧な解説ありがとうございました。
しかしこのクエリを実行すると、
『クエリ式 't2.2004=t1.2004' の'.'、'!'、または'()'の使い方が正しくありません。』
と言われてしまい実行できませんでした。
No.8
- 回答日時:
#6です。
まだ不明な点が2つあります。
1.結局、「年ごと」なのか「年度ごと」なのか
2.期間内にもっとも多い金額の日が複数あったらどうするか
補足要求ばかりでもなんですので、次の条件のSQLです。
・年ごと
・最大金額が複数あるときは、すべて出力
・テーブル名はtblとします。
・フィールドは、
year 期間を表す年
ymd 売上発生の年月日
price 売上金額
とします。
select t1.ymd, t1.price
from tbl AS t1
where t1.price=(select max(t2.price) from tbl as t2 where t2.year=t1.year)
order by t1.ymd;
この回答への補足
回答ありがとうございます。
不明な点にお答えします。
1.結局、「年ごと」なのか「年度ごと」なのか
→『年ごと』です。例えば、2004/1/1から2004/12/31までの中での最大金額です。
2.期間内にもっとも多い金額の日が複数あったらどうするか
→期間内にもっとも多い金額の日が複数日あった場合は、すべてが必要です。
上記のSQLについて質問です。
year 期間を表す年
これは、2004/1/1から2004/12/31までの最大金額を抽出する場合には、『2004』ということでしょうか。
よろしくお願いします。
No.7
- 回答日時:
年毎の最大値を取得するのはこんな感じのSQLで良いのではないでしょうか?
SQLなのまず条件に合うSQLを1つ作り、そのSQLを元に発展させるだけなので難しく考えない方がいいですよ。
SELECT max(table1.nen) as 年度 , max(yyyy.yen) AS 金額
FROM table1 , (SELECT distinct YEAR(nen) as ynen , yen FROM table1 ) AS yyyy
where year(table1.nen) = yyyy.ynen
GROUP BY yyyy.ynen
ORDER BY yyyy.ynen;
この回答への補足
済みません。最初の質問のしかたが悪かったせいで皆さんを混乱させてしまったようです。改めて質問し直します。
日付と売上額で構成された店の売上テーブルがあります。このテーブルから各年ごとに売上額がもっとも多かった日とその売上額を抽出する方法が知りたいのですが。。。
よろしくお願いします。
日付 ,売上額
2003/04/10,550000
2003/04/11,210000
2003/04/12,975000
2004/07/01,515000
2004/07/02,189000
2004/07/03,884500
2004/09/12,445500
2004/09/13,150000
No.6
- 回答日時:
で、結局、最大金額は年度だとして、日付というのは何を出せばいいのでしょうか?
その年度に含まれるすべての日付?
該当した年度を出力するというのなら話がわかるのですが。。。
No.3
- 回答日時:
またまたミスりました。
いやぁ自信なくすなぁw
No2ではムリです。
予期せぬレコードが出てきます。
金額で抽出してるので、他の年度の同金額まででるですな・・・
No.2
- 回答日時:
間違えました。
日付と最大金額が欲しいのですね。
SELECT * FROM T_TABLE WHERE (金額 IN (SELECT MAX(金額) FROM T_TABLE GROUP BY YEAR(日付)))
でした。
No.1
- 回答日時:
年度で良いですか?上のデータは全て2004年度ですが・・・
MS SQL Serverの場合
SELECT YEAR(日付) AS 年度, MAX(金額) AS 最大金額 FROM テーブル名 GROUP BY YEAR(日付)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 確定申告 借用書について 3 2022/12/19 16:11
- Excel(エクセル) Excelで医療費の集計をしていますが、もっと簡単に入力できる方法を教えていただきたいです。 3 2022/08/07 14:29
- ふるさと納税 個人年金の受取金に住民税がかかるのか? 3 2022/06/22 22:17
- 雇用保険 失業保険(失業給付金)について 4 2023/03/22 09:34
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- 預金・貯金 通帳内の定期預金の記載について 2 2022/03/27 18:00
- その他(年金) 傷病手当受給者、夫の扶養外の年金について お目に止めてくださり、ありがとうございます。 私は今年4月 3 2022/09/25 13:09
- 減税・節税 住宅ローン控除の還付金と年金生活者 2 2022/03/30 10:43
- 減税・節税 NTTグループ企業が従業員給与の一部をDポイント払いにした場合、、、、 9 2023/08/26 15:48
- その他(資産運用・投資) 来年からの新NISAの活用方でご相談 5 2023/06/25 11:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Access クエリで、レコードの無...
-
Excel→Accessへの日付データの...
-
Accessのデータ型の日付/時刻型...
-
【Accessで困っています...
-
指定日付を起点にして最新日付...
-
クロス集計のユニオンクエリー...
-
アクセス97のVBAで日付項目をヌ...
-
VBA 別シートの同じ日付の欄に...
-
Accessで日付の比較がうまくい...
-
SQL Server2005のクエリで「今...
-
Access:フォームのデータの並び順
-
BCPでCSV内の文字列をテーブル...
-
アクセスの昇順並び替えで空白...
-
ACCESSの空白をカウントする
-
Microsoft Query の抽出条件に...
-
ACCESSのデータ型変更について
-
アクセスで月単位の抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
アクセスで月単位の抽出
-
BCPでCSV内の文字列をテーブル...
-
Accessの日付時刻型から日付、...
-
VBA 別シートの同じ日付の欄に...
-
Excel→Accessへの日付データの...
-
Access クエリで、レコードの無...
-
指定日付を起点にして最新日付...
-
アクセス:既定値に土日含まず...
-
【エクセル】指定した日付に一...
-
ACCESSの空白をカウントする
-
Accessで日付の比較がうまくい...
-
【vba】日付の形式が勝手に変わ...
-
前のレコードの合計に現レコー...
-
エクセル-過去6カ月分の合計を...
-
Accessのデータ型の日付/時刻型...
-
【Accessで困っています...
-
アクセス97のVBAで日付項目をヌ...
おすすめ情報