
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
アクセスのクエリー作成
-
VBA 別シートの同じ日付の欄に...
-
年度ごとの最大値
-
Accessの日付時刻型から日付、...
-
日付型のフィールドに空白を入...
-
Access クエリで、レコードの無...
-
Excel→Accessへの日付データの...
-
【エクセル】指定した日付に一...
-
アクセスで日付を入力すると曜...
-
アクセスの昇順並び替えで空白...
-
Aceess2000で8桁の数字を日付型...
-
Accessのデータ型の日付/時刻型...
-
【vba】日付の形式が勝手に変わ...
-
前のレコードの合計に現レコー...
-
ACCESSの空白をカウントする
-
エクセルのWEBクエリで取り込め...
-
エクセル-過去6カ月分の合計を...
-
アクセスで月単位の抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
年度ごとの最大値
-
アクセスのクエリー作成
-
VBA 別シートの同じ日付の欄に...
-
アクセス:既定値に土日含まず...
-
アクセスで日付を入力すると曜...
-
Excel→Accessへの日付データの...
-
指定日付を起点にして最新日付...
-
ACCESSの空白をカウントする
-
Accessのデータ型の日付/時刻型...
-
Accessの日付時刻型から日付、...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
前のレコードの合計に現レコー...
-
【vba】日付の形式が勝手に変わ...
-
アクセスで月単位の抽出
-
Access クエリで、レコードの無...
-
アクセスの昇順並び替えで空白...
おすすめ情報