
Select
Customers.PrefecturalID
,MAX(Prefecturals.PrefecturalName) AS 都道府県名
,Count(*) As 顧客数
From
Customers
Join
Prefecturals
On Customers.PrefecturalID = Prifecturals.PrefecturalID
Group By
Customers.PrefecturalID
;
都道府県名にMAX関数を使っているのですが、MAX関数は最大値を求めるものですが、都道府県名にMAXを使って何をしているのですか?
都道府県IDをグループ化して、都道府県名は同じなので、一つ都道府県名を表示するということですか?一つ間違えていたら、都道府県名が多いものを表示するので、間違いは表示されないということですか?
No.2ベストアンサー
- 回答日時:
Max函数にテキスト型の値を与えたときには
文字コードの最大のものを返します
>都道府県IDをグループ化して、都道府県名は同じなので、一つ都道府県名を表示するということですか?
そうです。同じIDの都道府県名は皆同じのなので最大のものも同じと言うことになります
集計クエリでグループに指定していないものも表示させたいからこんな手法をとっているのでしょうけど
普通はIDと都道府県名の両方をグループに指定しますね
>一つ間違えていたら、都道府県名が多いものを表示するので、間違いは表示されないということですか?
そうはいかないですね
間違えている方の方が文字コードが大きければそっちを表示します
No.4
- 回答日時:
#3です。
「つまり、提示のSQLでは、単純にPrefecturalNameを書くことができません。
PrefecturalNameを得るためには、素直にやる場合、もう一階層、クエリを増やすといったことをやらなければなりません。」
というのは、「group byに、PrefecturalNameを追加しないで行う場合」ですので、念のため。
RDBMSが不明ですが、MySQLには「group by指定時に、selectで指定できる列」に拡張仕様を持っています。
今回のようなケースで、max関数を使わず、PrefecturalNameという列名を書けます。ただし、PrefecturalNameの値が一意に定まる場合のみ結果は保証され、そうでないなら結果は保証されず、文法エラーにもならないので、「知っていて使うのには便利ですが、知らないで使う可能性もある」という機能です。
No.3
- 回答日時:
「group by」指定時、selectの選択リストに指定できるのは、
(1)group byで指定した列
(2)max、countなどの集合(集計)関数
(3)定数
です。
つまり、提示のSQLでは、単純にPrefecturalNameを書くことができません。
PrefecturalNameを得るためには、素直にやる場合、もう一階層、クエリを増やすといったことをやらなければなりません。
しかし、maxやminを使っても結果が同じと分かっている場合、クエリを増やすのでなく、maxやmin関数を敢えて使うことで実現できます。
No.1
- 回答日時:
ご推察のとおり、多分
「都道府県名は同じなので、一つ都道府県名を表示する」
ようにしているのだ思います。
普通は、Prefecturals.PrefecturalName をGROUP BYに
含めて使うような気がしますけど。
かなり以前に、Macで「GROUP BYに1カラムしか指定できない」
と言う強烈なDBがあり、そのような場合には有効なトリック
だと思います。
もしくはPrefecturalsが正規化されていなくて、PrefecturalID
と言いつつ、複数あるとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL select *, `人口(男)`AND`人口(女)`/'面積' as '人口密度'FROM … 1 2023/07/03 21:05
- 地理学 どうして、北海道札幌市や茨城県水戸市などは都道府県と都道府県庁どちらも漢字で表記されているのに対し、 6 2022/07/03 12:21
- 警察・消防 組織上は都道府県警察は、都道府県の機関ですが、都道府県(知事、議会)は警察にたいして、実際どれくらい 1 2022/06/22 23:40
- その他(行政) 都道府県市区町村民に手厚い行政を行なっている都道府県市区町村は、どこの都道府県市区町村ですか。 具体 1 2023/07/02 10:12
- 政治 道州制について。 「道州制」と一口にいっても様々あり、都道府県を残すか廃止するか、立法権も与えるか否 1 2022/11/17 19:16
- Visual Basic(VBA) Excel VBA 転記について 2 2023/02/28 08:34
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL 「都道府県の面積の大きい順に並べる」このクエリselect構文を教えてください! テーブル名は'地理 1 2023/07/05 17:11
- その他(IT・Webサービス) 僕みたいな一般人の素人がインターネットで各都道府県民100人、合計4700人にアンケートを取るのって 3 2023/08/24 16:42
- その他(国内) 人に出身地を聞いて 反応に困る都道府県はどこですか? 出身地を聞いて話題が盛り上がらない 都道府県は 7 2022/03/26 16:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス レポートのテキスト...
-
ACCESSのクエリで集計で、先頭...
-
アクセスクエリ 締め日毎で絞...
-
複数列フィールド値のクロス集計
-
FROM の中で CASE を使えるでし...
-
Accessフォームにクロス集計ク...
-
MS-Accessのクロス集計クエリと...
-
桐の集計(集計行設定のこと)...
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
ワードで4段組みで文章を書い...
-
【マクロ】列を折りたたみ非表...
-
Accessでテーブル名やクエリ名...
-
INSERT INTO ステートメントに...
-
Accessレコードの追加や変更が...
-
SQLServer2005のSQL文での別名...
-
Accessファイルを作成者以外は...
-
アリエクで買った商品が破損し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FROM の中で CASE を使えるでし...
-
ACCESSのクエリで集計で、先頭...
-
複数列フィールド値のクロス集計
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
Accessフォームにクロス集計ク...
-
クロス集計の結果を元に戻す方法
-
AccessからExcelへエクスポート...
-
VBA 得意先ごと且つ日付ごとに...
-
アクセスクエリ 締め日毎で絞...
-
MS-Accessのクロス集計クエリと...
-
アクセス レポートのテキスト...
-
「警告 : NULL 値は集計または...
-
Accessで別テーブルの個数をユ...
-
Accessで年齢から年代ごとの集計
-
SQLserver 型違いの日付の比較...
-
Access2007 年度ごとの四半期...
-
Accessのクエリをクロス集計ウ...
-
accessクロス集計で前月21日~...
-
アクセス2003のsum([金額])で...
おすすめ情報