2015-11-13 39 views
2

我想按範圍計算我的密碼查詢的結果。按範圍計算密碼查詢的結果

下面是一個例子:比方說,我有書有出版年份名單,我想可以算的書籍配套我1970年和1979年,1980年和1989年間出版的暗號查詢數量, ......,2010年和2019

回答

3

更多信息如果你想做到這一切在一個查詢中我會做這樣的:

MATCH (b:Book) 
RETURN SUM(CASE WHEN 1970 <= b.published < 1980 THEN 1 ELSE 0 END) AS `70s`, 
     SUM(CASE WHEN 1980 <= b.published < 1990 THEN 1 ELSE 0 END) AS `80s`, 
     SUM(CASE WHEN 1990 <= b.published < 2000 THEN 1 ELSE 0 END) AS `90s`, 
     SUM(CASE WHEN 2000 <= b.published < 2010 THEN 1 ELSE 0 END) AS `00s`, 
     SUM(CASE WHEN 2010 <= b.published < 2020 THEN 1 ELSE 0 END) AS `10s` 

雖然我不認爲這會利用b.published上的任何指數。這種類型的範圍查詢也只適用於Neo4j 2.3。

0

如果你有Book節點published_year屬性,則查詢會是這個樣子:

MATCH (b:Book) 
WHERE b.published_year > 1969 AND b.published_year < 1980 
WITH count(b) AS num 
RETURN num; 

的幾個注意事項

  1. 確保published_year屬性是一個整數 - 在創建屬性時使用Cypher toInt()函數。
  2. 在Neo4j 2.3+中,這些類型的範圍查詢可以由索引支持。在published_year屬性創建一個索引來提高效率查找:CREATE INDEX ON :Book(published_year)索引上here