2017-09-24 29 views
0

に基づいて日中ほとんどのビューを取得するには、「来場者は」 フィールドが、私は、クエリを使用 、私は時間に基づいてグループをカウントするmysqlの - クエリは、私はテーブルを持っている時間

id = integer 
    ip = char 
    route = char 
    created_at = timestamp 

ある

SELECT * , HOUR(created_at) AS created_hour , COUNT(created_hour) 
FROM `visitors` WHERE created_at > DATE(NOW()) GROUP BY created_hour 

が、私はこのエラーを取得し、私は

SQL query: Documentation 

SELECT * , HOUR(created_at) AS created_hour , COUNT(created_hour) FROM `visitors` WHERE created_at > DATE(NOW()) GROUP BY created_hour LIMIT 0, 25 

MySQL said: Documentation 
#1054 - Unknown column 'created_hour' in 'field list' 
+2

「*」はこの文脈では無意味です。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry

答えて

2

"でグループ" に基づいて "カウント" することができます同じSELECT内でSELECT句の別名を使用します。 MySQLでは、GROUP BYでエイリアスを使用することが実際に可能であることを

SELECT HOUR(created_at) AS created_hour 
    , COUNT(HOUR(created_at)) 
FROM `visitors` 
WHERE created_at < DATE(NOW()) 
GROUP BY created_hour 

注:これは、代わりにあなたがこれを使用する必要があるだろう、ことはできません。しかし、SELECTで使用することはできません。

また、created_at > DATE(NOW())は、あなたが時間旅行者でない限り、実際にはあまり意味をなさないことに注意してください。

COUNT(HOUR(created_at))の代わりにCOUNT(*)を使用すると、読みやすくなり、同じ結果が返されます。

3

変更COUNT(created_hour)COUNT(*)

の代わりのcreated_at> DATE(NOW())、使用WHEREのcreated_at < DATE(NOW())。クエリの現在のWHERE条件は何も返されません。

関連する問題