次の二つのSELECT文を横に結合して4列で出力したいと考えいます。
SQL
1#1.mahouseki_logで0以上の値をもつuser_idに合致する3月中のlogin_logのuser_idからCOUNT(user_id), user_idを出力 2 3SELECT COUNT(user_id), user_id 4FROM login_log 5WHERE timestamp LIKE '3%' 6GROUP BY user_id 7HAVING user_id IN(SELECT user_id 8 FROM mahoseki_log 9 WHERE price_yen>=0 AND timestamp LIKE '3%'); 10 112.mahouseki_logで0以上の値をもつuser_idに合致する3月中のlogin_logのuser_idから下記のSELECT文以降の2つを出力 12SELECT COUNT(DISTINCT DATE_FORMAT(STR_TO_DATE(`timestamp`, '%c/%e/%y %H:%i'), '%d')) AS day, 13COUNT(quest_id) 14FROM quest_log 15WHERE timestamp LIKE '3%' 16GROUP BY user_id 17HAVING user_id IN(SELECT user_id 18 FROM mahoseki_log 19 WHERE price_yen>=0 AND timestamp LIKE '3%');
個人的にUNIONで結合しても列がそれぞれ2つあるためうまく行きません。また内部結合を試して見たのですが、細かいところ、および出力結果が違ってしまいました。
この二つのSELECT文を結合して4つの出力結果を得るにはどのような方法があるのかご教授いただけないでしょうか?よろしくお願いします、
またデータベースは下記のように挿入して作成しました
SQL
1CREATE TABLE user_master 2(user_id INTEGER, 3 install_datetime CHAR(13), 4 delete_flg INTEGER); 5 6INSERT INTO user_master VALUES (10001, '3/19/16 15:45', 0), 7 (10002, '3/21/16 12:30', 1), 8 (10003, '3/23/16 9:15', 0), 9 (10004, '3/25/16 6:00', 0), 10 (10005, '3/19/16 15:45', 1); 11 12 13CREATE TABLE login_log 14(user_id INTEGER, 15 timestamp CHAR(18)); 16 17INSERT INTO login_log VALUES (10001, '3/19/16 15:50'), 18 (10001, '3/20/16 0:20'), 19 (10001, '3/23/16 14:10'), 20 (10001, '3/24/16 0:15'), 21 (10002, '3/21/16 12:50'), 22 (10003, '3/23/16 11:00'), 23 (10003, '3/24/16 9:10'), 24 (10003, '3/24/16 11:20'); 25 26CREATE TABLE mahoseki_log 27(user_id INTEGER, 28 timestamp CHAR(13), 29 amount INTEGER, 30 category CHAR(7), 31 price_yen INTEGER); 32 33INSERT INTO mahoseki_log VALUES (10001, '3/19/16 15:50', 8, 'present', NULL), 34 (10001, '3/19/16 16:02', 1, 'presen', NULL), 35 (10001, '3/23/16 14:21', -5, 'gacha', NULL), 36 (10001, '3/23/16 14:30', -1, 'stamina', NULL), 37 (10002, '3/21/16 12:50', 8, 'present', NULL), 38 (10002, '3/21/16 12:55', -5, 'gacha', NULL), 39 (10003, '3/23/16 11:00', 8, 'present', NULL), 40 (10003, '3/23/16 11:10', 1, 'present', NULL), 41 (10003, '3/23/16 11:22', 1, 'present', NULL), 42 (10003, '3/23/16 11:30', 90, 'buy', 5400), 43 (10003, '3/23/16 11:32', -50, 'gacha', NULL), 44 (10003, '3/23/16 11:36', -50, 'gacha', NULL); 45 46 47 CREATE TABLE quest_log 48(user_id INTEGER, 49 timestamp CHAR(13), 50 quest_id INTEGER, 51 result INTEGER); 52 53INSERT INTO quest_log VALUES (10001, '3/19/16 15:55', 1001, 1), 54 (10001, '3/19/16 15:57', 1002, 1), 55 (10001, '3/19/16 16:00', 1003, 0), 56 (10001, '3/19/16 16:02', 1003, 1), 57 (10001, '3/19/16 16:07', 2001, 1), 58 (10001, '3/23/16 14:20', 1000101, 0), 59 (10001, '3/23/16 14:28', 1000101, 0), 60 (10001, '3/23/16 14:31', 1000101, 1), 61 (10003, '3/23/16 11:05', 1001, 1), 62 (10003, '3/23/16 11:07', 1002, 1), 63 (10003, '3/23/16 11:10', 1003, 1), 64 (10003, '3/23/16 11:15', 2001, 1), 65 (10003, '3/23/16 11:19', 2002, 1), 66 (10003, '3/23/16 11:22', 2003, 1), 67 (10003, '3/23/16 11:30', 3001, 1); 68 69
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/15 02:29