我在编写一个sql查询时感到困惑,因为它获取了当天下载的日期和最大文件总数。
我的表包含3个字段sno
,da_te
,fileName
,在这种情况下可能不需要fileName
。
sno
为整数,da_te
为默认时间戳,fileName
为varchar
所以例如我的表看起来像这样: -
sno da_te fileName
1 2015-10-18 11:13:00 xyz.pdf
2 2015-10-18 11:13:00 xxy.pdf
3 2015-10-18 11:13:00 xyy.pdf
4 2015-10-18 11:13:00 yyz.pdf
5 2015-10-18 11:13:00 xyz.pdf
6 2015-10-17 11:13:00 xzz.pdf
7 2015-10-17 11:13:00 zyz.pdf
8 2015-10-17 11:13:00 xyx.pdf
9 2015-10-16 11:13:00 xyy.pdf
10 2015-10-16 11:13:00 xyz.pdf
所以,结果我们可以得到: -
最大下载文件数= 5
和最大文件下载日期= 2015-10-18
我想知道如何为上述情况编写sql查询。
答案 0 :(得分:1)
您可以将group by
与count
一起使用。
select date(da_te), count(*)
from tablename
group by date(da_te)
order by count(*) desc
limit 1
答案 1 :(得分:1)
按日期时间列的日期部分分组
select date(da_te), count(*)
from mytable
group by date(da_te) order by count(*) desc
limit 1
答案 2 :(得分:1)
SELECT * FROM
(
SELECT
@n := @n+1,
z.*
FROM
(
SELECT
DATE(da_te),
COUNT(*)
FROM
YOURTABLE
GROUP BY
DATE(DA_TE)
ORDER BY
COUNT(*) DESC
) z,
(SELECT @n := 0) v
) x
WHERE n = 1;