techlover:
私を助けてください。怒鳴るようにテーブルを想像
id name date_join
1 joni 2020-01-01
2 dani 2020-01-01
3 fani 2020-01-02
4 rina 2020-01-02
5 budi 2020-01-02
6 john 2020-01-03
7 dita 2020-01-03
8 sani 2020-01-05
9 soni 2020-01-06
10 aple 2020-01-06
11 rita 2020-01-06
12 hari 2020-01-06
そして私は、クエリにしたいと、このような結果を示し、
dates total_member
2020-01-01 2
2020-01-02 5
2020-01-03 7
2020-01-04 7
2020-01-05 8
2020-01-06 12
2020-01-07 12
私はそのような結果を表示するクエリを作成する方法を知りません。私は、日付、日付(date_join)のカウント(ID)およびグループとして(date_join)を使用し、結果はそのように表示されません。
GMB:
MySQLの8.0では、集約とウィンドウ合計でこれを解決することができます。
select
date_join,
sum(count(*))) over(order by date_join) total_members
from mytable
group by date_join
order by date_join
あるいは凝集することなく:
select date_join, total_members
from (
select
date_join,
count(*) over(order by date_join, name) total_members,
row_number() over(order by date, name desc) rn
from mytable
) t
where rn = 1
order by date_join
以前のバージョンでは、一つの選択肢は、異なる日付を選択し、実行カウントを取得するために相関サブクエリを使用することです:
select
date_join,
(select count(*) from mytable t1 where t1.date_join <= t.date_join) total_members
from (select distinct date_join from mytable) t