0027NAME IS NULL2021/12/16(木) 16:50:02.45ID:y5mx3BAp 間違った 0028NAME IS NULL2022/02/11(金) 08:39:15.81ID:zwC8g7xH 集約関数が使えるのはSELECT句とHAVING句だけだと思っていたのですが、 ORDER BY COUNT(*); と書いてもエラーになりません。 集約関数が書ける句を全て上げると、どの句がありますか? 0029NAME IS NULL2022/02/26(土) 09:08:11.60ID:BPPSMltD 下記の@が、Aの様に書けないのはどうしてでしょうか? ご存じの方、いらっしゃいましたら教えて頂けると嬉しいです。 宜しくお願い致します。
@ SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, (SELECT AVG(hanbai_tanka) FROM Shohin) AS hanbai_tanka_all FROM Shohin;
A SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, AVG(hanbai_tanka) FROM Shohin FROM Shohin; 0030NAME IS NULL2022/02/26(土) 12:53:38.36ID:???>>29 GROUP BYとグループ関数の使い方を正しく学習してくるんだ グループ関数はGROUP BYが必須(全行が集計対象になる場合のみ省略可) 0031NAME IS NULL2022/02/27(日) 10:17:39.49ID:wR3P0H0y>>30 なるほど、それで@の内側のAVG()関数はSELECT句に書いてもエラーにならないんですね。 解りやすいです。ありがとうござました! 0032NAME IS NULL2022/03/03(木) 01:05:30.78ID:??? 伝票id 社員id 名前 数 1 a 山田 10 2 b 田中 20
select 社員id,名前,sum(数) from table group by 社員id with rollup
結果 a 山田 10 b 田中 20 null 田中 30
一番下の田中を、小計を出さずにnullにする事はできますか? 0033NAME IS NULL2022/03/03(木) 13:32:27.33ID:??? 自分でwith rollupを指定して何を言ってるんだ? 0034NAME IS NULL2022/03/03(木) 17:14:27.20ID:???>>32 突っ込まないから、どういう結果にしたいかを書いてみて 0035322022/03/09(水) 14:33:49.93ID:??? 解決しました。
select *
from ( select 列1,列2,sum(合計列) from テーブル名 group by 列1,列2 with rollup ) as テーブル
where (列1 is not null and 列2 is not null) or (列1 is null and 列2 is null)
サブクエリを使わずhavingを使った例もあったけど自分の環境では合計行が出なかった。 0036NAME IS NULL2022/03/11(金) 07:04:08.37ID:GAAG5umt 結局、ネタか 0037NAME IS NULL2022/03/16(水) 16:20:42.35ID:Fdgum0qq 改定前の「ゼロからはじめるデータベース操作 SQL」という本の177ページ問5.3に載っている問題なのですが、 下記の様に商品分類ごとに平均販売単価を求めるSQL文で、 「GROPU BY S1.shohin_bunrui」のS1.がどうして必要なのか分りません。 これを付けなくても結果は同じになります。 これがどうして必要なのか分る方いらっしゃいましたら教えて頂けると助かります。
CREATE VIEW AvgTankaByBunrui AS SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, (SELECT AVG(hanbai_tanka) FROM Shohin S2 WHERE S1.shohin_bunrui = S2.shohin_bunrui GROPU BY S1.shohin_bunrui) AS avg_hanbai_tanka FROM Shohin S1; 0038NAME IS NULL2022/03/16(水) 21:38:46.46ID:??? 憶測なんですがねぇ… 省略した場合はS2のshohin_bunruiが参照されるはず でもS1.shohin_bunrui = S2.shohin_bunruiが有るので S1でもS2でも結果は同じだから許されるのかもしれない 0039NAME IS NULL2022/03/16(水) 21:45:37.79ID:??? あ、MYSQLだからS1への参照許されるはず 他RDBMSだと多分エラーになる。S2ならば参照可能 0040NAME IS NULL2022/03/16(水) 21:55:38.94ID:??? ていうかその本はまれに見るクソだな… AVG(hanbai_tanka)はあくまでshohin_bunruiに関連するデータなので shohin_idやshohin_meiの列とは最早何の関連も無い情報なのよ それを無理やり結合して取得するやり方は意味不明バグの原因にしかならんよ 0041NAME IS NULL2022/03/17(木) 18:12:46.57ID:???>>40 ちょっと何言ってるかわかりません GROPU BYがおかしいのを除けば、普通の相関サブクエリだと思うが まあいまどきはあんまり使わんがな
上の真似して select case when name is null or name = '' then 'name' else name end as name case when idis null or id= '' then 'id' else id end as id from users; こんな感じでセレクトしてるんだけど、なぜかカラム名まで取れて 1行目 id name 22 山田 みたいな感じの結果が帰ってきてしまう。。 なんでですかね 0115NAME IS NULL2023/02/27(月) 16:04:25.51ID:???>>114 then ‘name’とかthen ‘id’としてるからだろ 0116NAME IS NULL2023/03/05(日) 15:24:38.71ID:??? スクリプト書くのもめんどくさいから表計算ソフトでやってしまう。 0117NAME IS NULL2023/03/20(月) 13:32:20.56ID:6b0WpT0J 【2月13日】 原発上空にUFO? 【震度6強】 ://egg.5ch.net/test/read.cgi/atom/1615255108/l50 0118NAME IS NULL2023/04/07(金) 07:38:50.85ID:??? 調べてみますね・・ 0119NAME IS NULL2023/04/07(金) 13:35:22.77ID:??? case1とかじゃなくてもいいの? 0120NAME IS NULL2023/06/13(火) 11:54:51.78ID:/UXsc9Sn kuni toshi -------- 日本 東京 日本 大阪 米国 ロス 米国 シカゴ 中国 北京 中国 上海
↓
kuni toshi -------- 日本 東京、大阪 米国 ロス、シカゴ 中国 北京、上海
初心者質問、ごめんなさい。 上記のようにgroup化したいのですが
SELECT kuni,toshi FROM テーブル名 GROUP BY kuni
では上手いきませんでした、アドバイスをお願いできませんか? 0121NAME IS NULL2023/06/13(火) 14:17:38.31ID:??? GROUP_CONCATで 0122NAME IS NULL2023/06/13(火) 15:55:49.38ID:/UXsc9Sn>>121
ありがとうございます!
いままで2回にわけてSQL文をつくって無理やりやっていましたが、スマートにできそうです! 0123ってことだよ2023/07/25(火) 10:50:58.47ID:OsyChIkV ってことだよってことだよってことだよ 0124NAME IS NULL2023/08/25(金) 02:11:49.10ID:UQngHRKx WHERE IN で入力した順番になりません
SELECT id,name FROM table WHERE id IN (3,2,1)
を流すと 1,2,3に並び替えられてしまいます
入力順のままにする方法はありますでしょうか? 0125NAME IS NULL2023/08/25(金) 02:14:36.46ID:??? 3、2、1の順にしたい場合は、その順にソートするしかない 0126NAME IS NULL2023/08/25(金) 02:19:36.31ID:UQngHRKx すいません! order by でできるのでしょうか? 0127NAME IS NULL2023/08/25(金) 02:36:15.05ID:??? 入力した順番が判らないと、その通りにはならない DBへの格納順は指定できない 3,2,1の順が単に大きい順ということなら、order by desc で良い