我有一张桌子上有这样的数据:
id | question | pub_date
1 | qeustion1| 2012-12-03
2 | qeustion2| 2012-12-06
3 | qeustion3| 2012-11-03
4 | qeustion4| 2011-12-03我想要一个输出,比如:它应该根据年份、月份结果计数和Desc顺序来计数记录,并且还应该显示每一行数据。
就我而言:
我试过这样做:
SELECT
EXTRACT(MONTH FROM pub_date) as month,
EXTRACT(YEAR FROM pub_date) as year,
Count(id)
FROM
mytable
GROUP BY
month,
year
ORDER BY
year DESC,
month DESC我需要显示这样的数据,请参阅博客存档站点的部分
发布于 2012-12-06 16:31:30
我想你想要的结果是:
2012 3
2012 12 2
2012 11 1
2011 1
2011 11 1您可以通过在两个聚合查询上使用union来获得这个结果:
select s.*
from ((select year(pub_date) as yr, NULL as month, count(*) as cnt
from t
group by year(pub_date)
) union all
(select year(pub_date) as yr, month(pub_date) as mon, count(*) as cnt
from t
group by year(pub_date), month(pub_date)
)
) s
order by yr desc,
(case when mon is null then -1 else mon end)发布于 2012-12-06 13:06:10
试试这个:
select count(id)
from mytable
group by year(pub_date), month(pub_date)
order by year(pub_date) desc, month(pub_date) desc如果您想知道有几个月和几年,请使用:
select year(pub_date) as year, month(pub_date) as month, count(id), *
from mytable
group by year(pub_date), month(pub_date)
order by year(pub_date) desc, month(pub_date) desc获取月份和年份的数据
select year(pub_date) as year, year_count, month(pub_date) as month, count(rowid) as month_count
from mytable u
, (
select year(pub_date) as year, count(rowid) year_count
from mytable
group by year(pub_date)
) as tab
where tab.year = year(u.pub_date)
group by year(pub_date), month(pub_date)https://stackoverflow.com/questions/13744136
复制相似问题