3
A
回答
4
你需要創建一個幫助臺,並與來自start
所有日期與該表往裏面end
,那麼就LEFT JOIN
:
SELECT d.dt AS date,
COUNT(*) AS total,
SUM(attitude = 'positive') AS positive,
SUM(attitude = 'neutral') AS neutral,
SUM(attitude = 'negative') AS negative
FROM dates d
LEFT JOIN
messages m
ON m.posted_at >= d.dt
AND m.posted_at < d.dt + INTERVAL 1 DAYS
AND spam = 0
AND duplicate = 0
AND ignore = 0
GROUP BY
d.dt
ORDER BY
d.dt
基本上,你所需要的就是一個虛擬的行源。
MySQL
是唯一缺乏生成方法的主要系統。
PostgreSQL
實現特殊功能generate_series
要做到這一點,而Oracle
和SQL Server
可以使用遞歸(CONNECT BY
和遞歸CTE
S,相應地)。
0
我不知道MySQL是否會支持以下/類似的語法;但如果沒有,那麼你可以創建並刪除臨時表。
--Inputs
declare @FromDate datetime, /*Inclusive*/
@ToDate datetime /*Inclusive*/
set @FromDate = '20091101'
set @ToDate = '20091130'
--Query
declare @Dates table (
DateValue datetime NOT NULL
)
set NOCOUNT ON
while @FromDate <= @ToDate /*Inclusive*/
begin
insert into @Dates(DateValue) values(@FromDate)
set @FromDate = @FromDate + 1
end
set NOCOUNT OFF
select dates.DateValue,
Col1...
from @Dates dates
left outer join SourceTableOrView data on
data.DateValue >= dates.DateValue
and data.DateValue < dates.DateValue + 1 /*NB: Exclusive*/
where ...?
相關問題
- 1. 填寫日期間的差距
- 2. 填寫表格日期差距
- 3. 填寫日期差距和最近值
- 4. 如何填補與Windows Phone 8.1中的URL 20%的差距?
- 5. MySQL的發現日期差距
- 6. MySQL如何填補範圍內缺失的小時/日期?
- 7. mysql中的日期差異
- 8. mysql中的日期差異
- 9. 填充日期和ID差距,然後在熊貓中滯後
- 10. MySQL日期差異
- 11. Excel中發現日期差距
- 12. SQL填充維差距與日期維度
- 13. Python/Numpy - 填補非連續點之間的差距?
- 14. 找到日期範圍的差距 - TSQL
- 15. 兩日期之間的差距
- 16. 佈局 - 如何填補頂部酒吧和底部酒吧之間的差距
- 17. PHP:如何填補日期的數組(Y-M-d)作爲鍵
- 18. 熊貓:創建行填補數字差距
- 19. 每個日期的項目數,在日期間沒有差距
- 20. 確定日期差距給定日期列表的長度
- 21. SQL:差距和島嶼,分組日期
- 22. MySQL日期差異查詢
- 23. PHP MySQL日期差異
- 24. 熊貓重新填補缺失的日期,或更好的方法來填補?
- 25. 填寫Mysql中數據範圍之間的差距
- 26. 如何計算mysql中的日期差異?
- 27. 仿型記錄填寫日期之間的差距在谷歌的BigQuery
- 28. 填寫月份差距
- 29. PHP日期中距
- 30. 如何匹配JavaScript中給定日期差異的日期
OMG。沒有辦法巧妙地做到這一點?也許存儲過程,或者什麼? – Arywista 2009-12-10 00:27:40
您可以使用存儲過程來填充表格(這隻需要執行一次)。 – Quassnoi 2009-12-10 00:28:13
好的 - 但我總是有不同的開始日期。所以我爲每個可能的日期創建表? :-( – Arywista 2009-12-10 00:37:22