2013-03-05 110 views
-1

我有一個變量,需要按月顯示它。這個變量是一個布爾值,如果它設置爲True,這意味着該應用程序已安裝。如何在SQL中添加變量

示例: 變量=龍頭安裝的應用程序

在一月有20個安裝的應用。 二月份有10個安裝的應用程序。 3月份有5個安裝的應用程序。

我要顯示在桌子上安裝的(布爾=真)的所有應用程序:

January: 20 

February: 20 (January) + 10 = 30 

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

有誰知道我怎麼能在MySQL做到這一點?

感謝

+1

顯示你的努力,請張貼你試過的一些sql。 – 2013-03-05 19:29:00

+0

請提供一些繼續。像表結構和任何你嘗試過的SQL。 – Randy 2013-03-05 19:33:03

回答

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

0

如果我理解正確的,它只是通過一個命令一個簡單的查詢。

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

希望你已經足夠精通SQL,用你所需要的部分替換這些部分。

+0

這不是關於排序行。我想要安裝一些aps。就像安裝的發展一樣。 – user2137198 2013-03-05 19:34:56

+0

好的,這在第一篇文章中根本就不清楚。只需獲得每月的總和,然後在PHP/Python端添加。你是手動還是編程查詢數據庫?不要讓SQL做比它需要的更多的事情。 PHP/Python中的滾動操作非常簡單。 – JustinDanielson 2013-03-05 19:37:23

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 

Example at SQL Fiddle.

0

我假設你有一個包含「已安裝」欄和「一個「應用程序」表InstalledDate「列。如果是這樣的......

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

斯科特

+0

我懂了!我用遞歸: – user2137198 2013-03-08 20:26:06

+0

SELECT AS yearmonth, (SELECT SUM(如果(安裝在(從database.dim_time其中id_time = a.fk_time選擇id_time)(1),1,0)),如從數據庫安裝 .facts_table 其中fk_time <= yearmonth )作爲安裝, FROM database.facts_table AS一個 GROUP BY yearmonth ORDER BY yearmonth ASC; – user2137198 2013-03-08 20:34:42

1

類似:

Select COUNT(*),Month 
From Apps 
where installed = true 
group by Month 
+0

這會如何將一月份的安裝次數與​​二月份的安裝次數相加? – Andomar 2013-03-05 19:38:49

+0

只要做到這一點,然後總結出你想用任何語言來查詢數據庫的特定範圍。 – JustinDanielson 2013-03-05 19:39:00