以下のようなテーブルがある時A支店番号 |支店

Writer: admin Type: ゃべり、雑談 Date: 2018-12-14 00:00
以下のようなテーブルがある時A支店番号 |支店名__________001 |東京002 |川崎003 |多摩004 |大阪005 |広島006 |福岡B支店番号 |商品コード |売上日___________________005 |035 |2017-11-01002 |031 |2017-11-02001 |034 |2017-11-08006 |035 |2017-11-09005 |031 |2017-11-12006 |036 |2017-11-16001 |033 |2017-11-18002 |035 |2017-11-22004 |034 |2017-12-05005 |033 |2017-12-14C商品コード |商品名|価格______________031 |エアコン |230000032 |テレビ |164000033 |カメラ |175000034 |洗濯機 |103000035 |冷蔵庫 |115000036 |スマホ | 75600支店名|総売り上げ数|11月売上数||11月売上額________________________東京| | |川崎| | |多摩| | |大阪| | |広島| | |福岡| | |のような集計を行うためのSQLについてです、使っているのはpgAdminⅢです。select A.支店名 as 支店名 ,(select count (houses.house_no) (joinやfromやwhere) as 総売り上げ数 ,(select count (houses.owner) (joinやfrom) where houses.date >= DATE_TRUNC('month', now()) + '-1 month' and houses.date < DATE_TRUNC('month', now())) as 11月売上数 ,(select count (sum ) (joinやfrom) where B.売上日 >= DATE_TRUNC('month', now()) + '-1 month' and B.売上日 < DATE_TRUNC('month', now())) as 11月売上額from buildersgroup by ~having ~order by ~;共感した0###> のような集計を行うためのSQLについてですで提示されたSQLでは問題があるのですか。確かに「(joinやfrom)」では動かないですね。あと、途中に「houses」「builders」というテーブルが唐突に出てきています。これはどんな意味を持っているのでしょうか。とりあえず、A,B,Cだけで考えてみました。一例ですSELECT A.支店名,COUNT(*) 総売り上げ数,SUM( CASE WHEN B.売上日 BETWEEN DATE_TRUNC('month', now()) + '-1 month' AND DATE_TRUNC('month', now() )THEN 1 ELSE 0 END ) 11月売上数,SUM( CASE WHEN B.売上日 BETWEEN DATE_TRUNC('month', now()) + '-1 month' AND DATE_TRUNC('month', now() ) THEN C.価格 ELSE 0 END ) 11月売上額FROM A JOIN BON A.支店番号 = B.支店番号JOIN CON C.商品コード = B.商品コード GROUP BY A.支店名;文法エラーがない以外は動作検証はしていません。なお、「11月売上数」のように先頭が数字の別名はエラーになるようです。間違っていたらごめんなさい。ナイス0
###housesとかは無視してください。また、同様のテーブルで以下のような集計をする際032の販売数は0を出すにはどのような方法でしょうか?商品名|総売り上げ数|11月売上数||11月売上額________________________031|||032|||*032の売り上げはこの期間では0だが、集計に033|||034|||035|||036|||
###この質問は投票によってベストアンサーに選ばれました!

 

TAG