
こんにちは質問させてください。
商品が登録されているテーブル A に以下のカラムがあるとします。
id(int), name(varcahr), dt(datetime)
id には 店を識別す固有の番号がふってあり、
name には 商品名、
dt には商品を登録した日付が入っているものとします。
やりたいことは
”id が 「1」 である全商品数” と ”今月登録された商品の数” を出力したいのです。
id が 1 である商品の数は以下のSQLで取り出せます。
SELECT COUNT(*) FROM
( SELECT * FROM A WHERE A.id='1' ) AS tbl1
id が 1 で 今月登録された商品の数は以下のSQLで取り出せます。
SELECT COUNT(*) FROM
( SELECT * FROM A
WHERE A.dt BETWEEN DATE(
DATE_SUB( NOW(), INTERVAL DAYOFMONTH( NOW() )-1 DAY) ) AND
LAST_DAY( NOW() ) AND A.id='1' ) AS tbl1
これをひとつのSQLにまとめるにはどうしたらいいのでしょうか…。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
こんな感じですかね?
//データ作成
create table tbl(id int,name varchar(10),dt datetime);
insert into tbl values(1,'a','2014-04-01 08:00:00'),(1,'b','2014-04-02 08:00:00'),(1,'c','2014-04-03 08:00:00'),(1,'d','2014-05-01 08:00:00'),(2,'e','2014-04-04 08:00:00'),(2,'f','2014-05-02 08:00:00');
→idが1のデータは4つ、内3つのデータが2014年4月の日付
//集計・・・今日が2014年4月である前提でnow()を利用
select count(*) as c1
,sum(dt between (@d:=date_format(now(),'%Y-%m-01 00:00:00')) and (@d+interval 1 month -interval 1 second)) as c2
from tbl
where id=1;
※条件式をsumで集計すると件数がとれます
(@d:=date_format(now(),'%Y-%m-01 00:00:00'))
というのが、今月1日の、0時0分0秒で '2014-04-01 00:00:00'
(@d+interval 1 month -interval 1 second))
というのが、今月1日の1ヶ月後の1秒前で'2014-04-30 23:59:59'
こんにちは。
ご回答ありがとうございます。
フムフム…
条件式をsumで集計…!!!
なるほどーなるほどーです、こういう風に使うんですね!
こんな考え方ができちゃうなんてすごいですー^^@
ありがとうございます。
ひとつ賢くなれました!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
クエリ表示と、ADOで抽出したレ...
-
エラー 1068 (42000): 複数の主...
-
マイクラPC版のコマンドで効率...
-
別テーブルからSELECTした値を...
-
select文のwhere句に配列を入れ...
-
一つ前のレコードの値と減算し...
-
VMware Player でCD-ROMドライ...
-
ID毎に最新の値を取得する
-
SQLサーバから、項目の属性(型...
-
文字列を結合したカラムでJoin...
-
小人の読み方は?
-
access2007でdcountを使って連...
-
フィールドのデータ型を取得し...
-
ある列の値を自動的にずらしたい
-
sqlite結果の非表示
-
Webで、図形描画を行いたい。
-
レコードセットに新規追加する
-
`picture` varchar(255) のコマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報