2017-05-05 88 views
1

我在我的卡桑德拉的數據庫,這些數據多少算值:SQL查詢來根據其他領域

+----+----------+-----+-----------+---------+----------+ 
| ID | NAME  |  hour_date   | value | 
+----+----------+-----+-----------+---------+----------+ 
| 1 | Ramesh | 2017-04-16 05:00:00+0000 | 2000.00 | 
| 2 | Ramesh | 2017-04-16 08:00:00+0000 | 1500.00 | 
| 3 | Ramesh | 2017-04-16 11:00:00+0000 | 2000.00 | 
| 4 | Komal | 2017-04-22 05:00:00+0000 | 6500.00 | 
| 5 | Komal | 2017-04-16 09:00:00+0000 | 8500.00 | 
| 6 | Komal | 2017-04-22 17:00:00+0000 | 4500.00 | 
| 7 | Komal | 2017-04-22 05:00:00+0000 | 10000.00 | 
+----+----------+-----+-----------+---------+----------+ 

通過使用SQL查詢,我特林計算每名有多少值在特定的日期。下面是輸出的我在尋找的例子:

輸出:

Ramesh: 
2017-04-16 : 3 values 

Komal: 
2017-04-16 : 1 value 
2017-04-22 : 3 values 

我試着這樣做:

SELECT hour_date,name,count(value) 
FROM table WHERE 
       (
       SELECT hour_date from table 
       WHERE hour_date = '2017-04-16 05:00:00+0000' 
       ) 

但是,這並不工作。 我該如何查詢表中的每個名稱以及每個hour_date的數量? 我無法弄清楚這一點。

我使用pyspark使用cassandra連接器進行sql查詢。 任何建議將不勝感激。

+0

你使用的是哪個數據庫? MySQL,SQL Server,Oracle ...? –

+0

什麼是'hour_date'列類型? –

+0

其實我正在使用Cassandra + pyspark,並使用sql來進行查詢@StefanoZanini – Somar

回答

2


您可以使用下面的查詢

SELECT trunc(hour_date),name,count(value) 
FROM table group by trunc(hour_date), name; 

TRUNC函數繞過戳,你可以得到特定日期的數據的數量相對於名字。它你想你也可以按日期和名稱訂購

order by trunc(hour_date), name 
+0

'trunc'函數中缺少一些東西。它有爭論。我試過'trunc(hour_date,'YYYY-MM-DD')',但它什麼也沒有返回。 – Somar

+0

hour_date是日期數據類型嗎?如果不是trunc將不起作用。無需提供任何參數,如數據格式。描述該表並檢查數據類型 –

+0

hour_date的類型是時間戳 錯誤:函數trunc的參數數量無效 – Somar

1

您錯過了組合函數計數。 試試這個: -

SELECT name,hour_date,count(value) as values 
FROM table 
group by name, hour_date 
order by name, hour_date 
+0

...'ORDER BY name,hour_date;' – Manngo

+0

@Manngo謝謝。更新了答案 –

1

我認爲你可以使用(在MYSQL):

SELECT name,DATE(hour_date) AS date_only, count(value) as values 
FROM table 
group by name, DATE(hour_date) 
order by name, DATE(hour_date) 
1

你可以通過你想指望,而你的情況是用戶所需要的值組和您的日期時間的日期部分

select name, toDate(hour_date), count(distinct id) 
from table 
group by name, toDate(hour_date) 
order by name, toDate(hour_date) 

toDate()功能將只保留日期部分,不包括小時,分鐘和秒。

還要注意,計數參數是distinct id,因爲您的版本會計算兩個具有相同值的行。