我有一個表(tbl_people),在這個表中我有一個日期時間字段,我想分組和統計10年組中的記錄...結果應該是這樣的:
|算上 |今年 |
| 1000 | 1980-1989 |
| 250 | 1990-1999 |
我可以寫多個查詢來做到這一點,但這意味着我將不得不爲每個範圍編寫不同的查詢。有沒有辦法來動態地從至少一年向上遞增(10年爲間隔),並計算記錄的間隔時間內有多少?組年份樂隊間隔
Q
組年份樂隊間隔
4
A
回答
4
首先計算出十年的每一行
select floor(year(`year`)/10) * 10 as decade
from tbl_people
,然後,如果你想在近十年的一列使用這個中間結果計數SQL Fiddle
select count(*), decade, decade + 9
from (select floor(year(`year`)/10) * 10 as decade
from tbl_people) t
group by decade
或本SQL Fiddle,
select count(*) as count, concat(decade, '-', decade + 9) as year
from (select floor(year(`year`)/10) * 10 as decade
from tbl_people) t
group by decade
0
這應該工作 - SQL Fiddle(感謝奧拉夫Dietsche用於顯示我這個美好的網站存在):
SELECT
COUNT(`year`) as `count`,
CONCAT(
FLOOR(YEAR(`year`)/10) * 10,
'-',
(CEIL(YEAR(`year`)/10) * 10) - 1
) as `year`
FROM
`tbl_people`
GROUP BY
CONCAT(
FLOOR(YEAR(`year`)/10) * 10,
'-',
(CEIL(YEAR(`year`)/10) * 10) - 1
)
如果數字是1992年,FLOOR(1992/10)
會給199
,和次10
會給1990
。關於CEIL(1992/10)
= = 200
和時間10
= 2000
,減號1
,給出1999
,因此year
應該是1990-1999
。
+0
我需要從表格中選擇最小年份。然後根據它創建樂隊。奧拉夫的答案就是這樣。 – IROEGBU
0
這會有所幫助。
select CONCAT(FLOOR(YEAR(from_unixtime(TIMESTAMP))/10)*10,'-',(FLOOR(YEAR(from_unixtime(TIMESTAMP))/10)*10)+9) as year , count(ID) from
TABLE group by FLOOR(YEAR(from_unixtime(TIMESTAMP))/10)*10;
相關問題
- 1. JavaScript下拉菜單的年份間隔
- 2. 如何按月份和年份分組,並分隔條目?
- 3. 設置背景樂隊詳細樂隊
- 4. 年齡間隔與SQL
- 5. 如果條件中包含日期間隔和動態年份
- 6. 年份與週年之間的區別?
- 7. 計算閏年之間的年份
- 8. 年的間隔時間在組合框中
- 9. 如何在iReport中的現有樂隊之間插入細節樂隊?
- 10. 樂隊和團體之間的區別
- 11. 按時間間隔分組的飛鳥隊
- 12. 一年時間間隔mysql條件
- 13. 如何按年份分組?
- 14. 按sql分組年份
- 15. Jinja2按月份/年組
- 16. 如何按月份+年份分組?
- 17. 按月份和年份分組
- 18. 紅寶石組按月份和年份
- 19. 如何按年份和月份分組?
- 20. 按月份和年份分組
- 21. MySQL中按年份和月份分組
- 22. PHP:如果不是當前年份,寫出年份,時間戳
- 23. 組間隔時間間隔20秒
- 24. UltraGrid兒童樂隊
- 25. 將年份範圍[1960年當前年份]添加到組合框
- 26. Linq:按日期間隔分組(5,10,15等..年)
- 27. 同時通過2個參數是月份和年份如何俱樂部由'/'
- 28. 多年間隔的Mysql查詢
- 29. 展望2010年表格間隔怪異
- 30. 真實年份datediff(無年份)
這樣做...謝謝:) – IROEGBU