-1

月ごとに表示する必要がある変数があります。この変数はブール値であり、True に設定されている場合、アプリがインストールされたことを意味します。

例: 変数 = インストールされたアプリ

1 月には 20 個のアプリがインストールされました。2 月には 10 個のアプリがインストールされました。3 月には 5 つのアプリがインストールされました。

インストールされたすべてのアプリを表に表示したい (boolean = True):

January: 20

February: 20 (January) + 10 =  30

March: 20 (January) + 10 (February) + 5 (March) = 35

Mysqlでこれを行う方法を知っている人はいますか?

ありがとう

4

5 に答える 5

1

サブクエリを使用して、インストールを月ごとにグループ化できます。次に、外部クエリで変数を使用して、累積合計を計算できます。

select  installation_year
,       installation_month
,       installation_count
,       (@running_sum:= @running_sum + installation_count) as cumulative_sum
from    (
        select  year(installation_date) as installation_year
        ,       month(installation_date) as installation_month
        ,       count(*) as installation_count
        from    YourTable
        group by
                installation_year
        ,       installation_month
        ) as SubQueryAlias
join    (select @running_sum := 0) as InitVars
order by 
        installation_year
,       installation_month

SQLフィドルでの例。

于 2013-03-05T19:31:50.967 に答える
1

何かのようなもの:

Select COUNT(*),Month 
From Apps
where installed = true
group by Month
于 2013-03-05T19:33:09.837 に答える
0

私が正しく理解していれば、それはbyによる順序付けを伴う単純なクエリです。

select COLUMNS_YOU_WANT from TABLE_NAME 
where YOUR_BOOLEAN == True 
order by SOME_DATE_COLUMN

うまくいけば、SQLに精通していて、セクションを必要なものに置き換えることができます。

于 2013-03-05T19:31:24.360 に答える
0

「Installed」列と「InstalledDate」列を含む「Applications」テーブルがあると想定しています。もしそうなら...

SELECT Count(*)
FROM   Applications
WHERE  Installed = 1 -- Assumes a bit/boolean column.
AND    InstalledDate BETWEEN @StartDate AND @EndDate;

スコット

于 2013-03-05T19:32:40.353 に答える
0

わかった!再帰を使用しました

SELECT (select id_time from database.dim_time where id_time = a.fk_time) AS yearmonth, (select sum( if( installed in (1), 1,0)) as installed from database.facts_table where fk_time <= yearmonth ) as installed FROM database.facts_table AS a GROUP BY yearmonth ORDER BY yearmonth ASC

于 2013-03-08T20:40:09.067 に答える