MariaDB (MySql) 件数取得 count(distinct field)でfieldの重複をなくした件数を取得

mariadb mysql select count(distinct field)で件数取得 mariadb

データベースから取得し、ある処理する「総処理時間を見積もる」のに、テーブル内の件数をまず見てみようと。200商品のランキングを日々集計していたとして、1ケ月以内に10位以内に入っていた商品は何個あるのかを取得しようとしたとき、商品idで区別するdistinct 商品id を入れるとOK。グループ化的な感じですが、グループ化はまたgroup byがあるのでグループ化とは言ってはいけないですね。


select count(distinct 商品id) from ranking where rank <= 10 and created > (now() - interval 1 month);

出てきた結果が20だと、20種類の商品が一か月以内にトップ10に入っている、となります。
これに1商品に対して行う処理時間を掛ければ、ある程度見積り出来そうです。

  • 毎日の売り上げランキングがrankingテーブルに入っている
  • 商品idがその日(created)にいくつ売れて、何位か(rank)

コメント

タイトルとURLをコピーしました