実現したいこと
CREATE TABLE `orders` ( `num` int(11) NOT NULL DEFAULT '1', `deli_date` date NOT NULL DEFAULT '0000-00-00', ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `orders` (`deli_date`, `num`) VALUES ('2024-10-02', 1), ('2024-10-04', 1), ('2024-10-12', 1), ('2024-10-14', 1), ('2024-10-15', 1), ('2024-10-16', 1), ('2024-10-29', 1), ('2024-11-07', 1), ('2024-11-17', 1), ('2024-11-20', 1), ('2024-11-24', 2), ('2024-11-28', 1), ('2024-12-01', 1), ('2024-12-01', 1), ('2024-12-06', 1), ('2024-12-10', 1), ('2024-12-19', 1), ('2024-12-19', 1);
上記のテーブルから例えば12月度の
2024-12-01 2
2024-12-06 1
2024-12-06 1
2024-12-10 1
2024-12-19 2
という日別集計を行い、そこから
12月中にnum2以上の日数を算出したい
発生している問題・分からないこと
SELECT `deli_date`,CASE WHEN SUM(num) >= 2 THEN "over" ELSE "under" END AS num FROM `orders` WHERE DATE_FORMAT(deli_date,'%Y-%m') ="2024-12" GROUP BY `deli_date`;
上記のクエリで2以上の算出はできるのですがそこから2以上が何日あるかができません。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
SELECT COUNT( SELECT CASE WHEN SUM(num) >= 2 THEN 1 ELSE null END AS num FROM `orders` WHERE DATE_FORMAT(deli_date,'%Y-%m') ="2024-12" GROUP BY `deli_date`) AS t1 FROM `orders`
上記など試しましたが構文エラーとなりました。
そもそも、1回のクエリで算出するのは難しいのでしょうか、
またはできたとしても高負荷になりますでしょうか
補足
mysql 5.7
Mac OSX 13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/12/27 18:12