我有一个数据库,其中包含多个url
和一个与created_at
相关联的日期(url
)。
我希望有类似的东西:
Select DISTINCT url, "the first date of this url"
from database
where blabala
我的问题是当一个日期添加到选择我得到这个:
/url/sdfsd | 2014-07-19
/url/sdfsd | 2014-07-20
/url/sdfsd | 2014-07-25
我想要的只是:
/url/sdfsd | 2014-07-19
我意识到我过度简化了我的问题,但多亏了你们,我设法找到了解决方案
select req2.date, COUNT(DATE(req2.date)) as count
from (
select hash_request -> 'PATH_INFO', min(DATE(created_at)) as date
from (
select *
from request_statistics
where LOWER(hash_request -> 'HTTP_USER_AGENT') LIKE '%google%'
) req1
group by hash_request -> 'PATH_INFO'
) req2
group by req2.date
order by req2.date asc
我很难将所有唯一网址上的日期分组。现在我有,每天所有独特网址的唯一网址数量
答案 0 :(得分:5)
记录是否排序?
select url, min(created_at)
from databaseTable
where blabala
group by url
答案 1 :(得分:0)
如果您还想要其他字段,那么distinct on
语法可能就是您想要的:
Select DISTINCT ON (url) d.*
from database d
where blabala
order by url, created_at asc;
答案 2 :(得分:0)
你能用“LIMIT”只返回一行吗?
SELECT url, created_at FROM table WHERE blablabla LIMIT 1
您也可以使用ORDER BY选择最早或最近的日期。
以下是有关LIMIT
的更多信息答案 3 :(得分:0)
distinct
的问题是它返回一个不同的行。因此,当您有多个记录时,除了日期之外它们都是相同的,因为日期不同(即整个记录与其他记录不同)。所以基本上你可以使用Gordon建议的distinct on
方法或Conffusion建议的min
方法。我个人的偏好是distinct on
。它更健壮。