如何只显示当前的记录
How to show only the records from the current
我只想select当天的记录。这样我就可以看到每天有多少访客("bezoekers")。
这是我使用的代码:
Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)",
COUNT(DISTINCT address) "Bezoekers"
FROM sensordata1
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC
我尝试了什么:
Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)",
COUNT(DISTINCT address) "Bezoekers"
FROM sensordata1
WHERE 1, DATE('Datum') = DATE(CURDATE()
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC
我想要什么:
Datum | Bezoekers
2017-4-20-15 | 31
2017-4-20-14 | 34
2017-4-20-13 | 20
2017-4-20-12 | 26
而且我不想在那里放一个 2017-04-21 的例子。
如果我第二天回来,那必须从那天开始,所以你不能设置日期。
您缺少 GROUP BY
。如果每个 FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
需要一个结果行,则按它分组。
Select
FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)",
COUNT(DISTINCT address) AS "Bezoekers"
FROM sensordata1
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;
仅当天相同(添加了相应的 WHERE
子句):
Select
FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)",
COUNT(DISTINCT address) AS "Bezoekers"
FROM sensordata1
WHERE FROM_UnixTime(sensordata1.time, '%Y-%m-%d') = curdate()
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;
我想指出,您可以使用别名来简化查询。日期逻辑有点不清楚,但你似乎想要昨天的日期。您使用 where
子句执行此操作:
Select from_unixtime(sd.time, '%Y-%c-%d-%H') as Datum,
count(distinct sd.address) as Bezoekers
from sensordata1 sd
where sd.time >= unixtime_timestamp(curdate() - interval 1 day) and
sd.time < unixtime_timestamp(curdate())
group by datum
order by datum desc
我只想select当天的记录。这样我就可以看到每天有多少访客("bezoekers")。
这是我使用的代码:
Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)",
COUNT(DISTINCT address) "Bezoekers"
FROM sensordata1
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC
我尝试了什么:
Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)",
COUNT(DISTINCT address) "Bezoekers"
FROM sensordata1
WHERE 1, DATE('Datum') = DATE(CURDATE()
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC
我想要什么:
Datum | Bezoekers
2017-4-20-15 | 31
2017-4-20-14 | 34
2017-4-20-13 | 20
2017-4-20-12 | 26
而且我不想在那里放一个 2017-04-21 的例子。 如果我第二天回来,那必须从那天开始,所以你不能设置日期。
您缺少 GROUP BY
。如果每个 FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
需要一个结果行,则按它分组。
Select
FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)",
COUNT(DISTINCT address) AS "Bezoekers"
FROM sensordata1
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;
仅当天相同(添加了相应的 WHERE
子句):
Select
FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)",
COUNT(DISTINCT address) AS "Bezoekers"
FROM sensordata1
WHERE FROM_UnixTime(sensordata1.time, '%Y-%m-%d') = curdate()
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;
我想指出,您可以使用别名来简化查询。日期逻辑有点不清楚,但你似乎想要昨天的日期。您使用 where
子句执行此操作:
Select from_unixtime(sd.time, '%Y-%c-%d-%H') as Datum,
count(distinct sd.address) as Bezoekers
from sensordata1 sd
where sd.time >= unixtime_timestamp(curdate() - interval 1 day) and
sd.time < unixtime_timestamp(curdate())
group by datum
order by datum desc