...
This document describes the basic concepts of the Continuous Query Language (CQL) of Odysseus and shows how to use the language.
(See end of this page for a grammar description).
The Continuous Query Language (CQL) is a SQL based declarative query language. This document shows how to formulate queries with CQL.
...
Code Block | ||
---|---|---|
| ||
#PARSER CQL #TRANSCFG Standard #DROPALLQUERIES #DROPALLSOURCES #QUERY CREATE STREAM nexmark:person (timestamp STARTTIMESTAMP, id INTEGER, name STRING, email STRING, creditcard STRING, city STRING, state STRING) CHANNEL localhost : 65440 #QUERY CREATE STREAM nexmark:bid (timestamp STARTTIMESTAMP, auction INTEGER, bidder INTEGER, datetime LONG, price DOUBLE) CHANNEL localhost : 65442 #QUERY CREATE STREAM nexmark:auction (timestamp STARTTIMESTAMP, id INTEGER, itemname STRING, description STRING, initialbid INTEGER, reserve INTEGER, expires LONG, seller INTEGER, category INTEGER) CHANNEL localhost : 65441 #QUERY CREATE STREAM nexmark:category (id INTEGER, name STRING, description STRING, parentid INTEGER) CHANNEL localhost : 65443 #PARSER CQL #TRANSCFG Standard #DROPALLQUERIES /// Query 1: Currency Conversion #QNAME Nexmark:Q1 #ADDQUERY SELECT auction, DolToEur(price) AS euro, bidder, datetime FROM nexmark:bid [UNBOUNDED]; ///Query 2: Selection #QNAME Nexmark:Q2 #ADDQUERY SELECT auction, price FROM nexmark:bid WHERE auction=7 OR auction=20 OR auction=21 OR auction=59 OR auction=87; ///Query 3: Local Item Suggestion #QNAME Nexmark:Q3 #ADDQUERY SELECT p.name, p.city, p.state, a.id FROM nexmark:auction [UNBOUNDED] AS a, nexmark:person [UNBOUNDED] AS p WHERE a.seller=p.id AND (p.state='Oregon' OR p.state='Idaho' OR p.state='California') AND a.category = 10; ///Query 4: Average Price for a Category #QNAME Nexmark:Q4 #ADDQUERY SELECT AVG(q.final) FROM nexmark:category [UNBOUNDED] AS c, (SELECT MAX(b.price) AS final, a.category FROM nexmark:auction [UNBOUNDED] AS a, nexmark:bid [UNBOUNDED] AS b WHERE a.id = b.auction AND b.datetime < a.expires AND a.expires < Now() GROUP BY a.id, a.category) AS q WHERE q.category = c.id GROUP BY c.id; ///Query 5: Hot Items #QNAME Nexmark:Q5 #ADDQUERY SELECT b2.auction FROM (SELECT b1.auction, COUNT(auction) AS num FROM nexmark:bid [SIZE 60 MINUTES ADVANCE 1 MINUTE TIME] AS b1 GROUP BY b1.auction ) AS b2 WHERE num >= ALL (SELECT count(auction) AS c FROM nexmark:bid [SIZE 60 MINUTES ADVANCE 1 MINUTE TIME] AS b2 GROUP bY b2.auction) ///Query 6: Average Selling Price by Seller #QNAME Nexmark:Q6 #ADDQUERY SELECT AVG(Q.final) AS s, Q.seller FROM ( SELECT MAX(B.price) AS final, A.seller FROM nexmark:auction [UNBOUNDED] AS A , nexmark:bid [UNBOUNDED] AS B WHERE A.id=B.auction AND B.datetime < A.expires AND A.expires < ${NOW} GROUP BY A.id, A.seller) [SIZE 10 TUPLE PARTITION BY A.seller] AS Q GROUP BY Q.seller; ///Query 7: Monitor New Users #QNAME Nexmark:Q7 #ADDQUERY SELECT p.id, p.name, a.reserve FROM nexmark:person [SIZE 12 HOURS ADVANCE 1 TIME] AS p, nexmark:auction [SIZE 12 HOURS ADVANCE 1 TIME] AS a WHERE p.id = a.seller; |
...