2017-04-21 6 views
0

오늘의 레코드 만 선택하고 싶습니다. 그래서 나는 얼마나 많은 방문자 ("bezoekers")가 있었는지 매일 볼 수 있습니다.현재 레코드 만 표시하는 방법

Datum   | Bezoekers 
2017-4-20-15 | 31 
2017-4-20-14 | 34 
2017-4-20-13 | 20 
2017-4-20-12 | 26 

을 내가 예 A 2017-04 원하는 해달라고 : 내가 원하는 무엇

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 

:

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 

내가 뭘하려 :

내가 사용하는 코드입니다 거기에 -21. 그리고 그 다음날에 돌아 오면 그 날부터 있어야만 당신의 위선자가 데이트를 할 수 있습니다.

+0

샘플 테이블 데이터와 예상되는 결과를 추가하십시오. – jarlh

+0

나는 이미 내가 원하는 것을 보여 줬습니까? thats 예상 결과? –

+0

WHERE 절이 나에게 잘못되어있는 것 같습니다. HAVING을 사용하려고 했습니까 ... – etsa

답변

0

GROUP BY가 누락되었습니다. FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') 당 하나의 결과 행을 원한다면 그룹화하십시오. (AN 따라 WHERE 조항 추가)은 현재 일에 대한 동일

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; 

:

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; 
+0

What 정확히 (GROUP BY FROM_UnixTime (sensordata1.time + 7200), '% Y- % c- % d- % H')를 추가하면 여전히 그날 이후의 데이터가 표시됩니다. –

+0

검색어가 표시됩니다. 하나의 결과 행에 총 수와 임의로 선택한 요일/시간 중 하나가 표시됩니다. 그러나 원하는 결과에는 각각의 행과 함께 시간당 하나의 행이 있습니다. 이것은 내 쿼리의 기능입니다. "당신이 원하는 것이 아닙니다 * –

+0

@ 토르 스텐 어쩌면 그는 HAVING "Datum에 대한 절 (Currentdate와 비교하여 내림차순?" – etsa

0

난 당신이 쿼리를 단순화하기 위해 별칭을 사용할 수 있다는 점을 지적하고 싶다. 날짜 논리는 약간 불분명하지만 어제 날짜를 원하는 것 같습니다. 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