合計値を見つけるためのクエリmysqlの

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32296&siteId=1