-
Notifications
You must be signed in to change notification settings - Fork 825
Closed
Description
Summary: make some functions work with boolean datatypes.
So we can transform avg(boolean)
---> avg(uint8)
Now databend boolean return true/false , like this:
[local] [sql]> select 1>0, 0>1;
[ok] ✅ Query precheck passed!
+---------+---------+
| (1 > 0) | (0 > 1) |
+---------+---------+
| true | false |
+---------+---------+
[ok] ✅ read rows: 1, read bytes: 1 B, rows/sec: 500 (rows/sec), bytes/sec: 500 (B/sec), time: 0.002 sec
if we can make boolean return 0/ 1 like this:
[local] [sql]> select 1>0, 0>1;
[ok] ✅ Query precheck passed!
+---------+---------+
| (1 > 0) | (0 > 1) |
+---------+---------+
| 1 | 0 |
+---------+---------+
[ok] ✅ read rows: 1, read bytes: 1 B, rows/sec: 500 (rows/sec), bytes/sec: 500 (B/sec), time: 0.002 sec
if support boolean return 0 or 1 , can optimize sql :
The percentage of delays by carrier for 2007
SELECT Carrier, c, c2, c*100/c2 as c3
FROM
(
SELECT
IATA_CODE_Reporting_Airline AS Carrier,
count(*) AS c
FROM ontime
WHERE DepDelay>10
AND Year=2007
GROUP BY Carrier
) q
JOIN
(
SELECT
IATA_CODE_Reporting_Airline AS Carrier,
count(*) AS c2
FROM ontime
WHERE Year=2007
GROUP BY Carrier
) qq USING Carrier
ORDER BY c3 DESC;
Better version of the same query:
SELECT IATA_CODE_Reporting_Airline AS Carrier, avg(DepDelay>10)*100 AS c3
FROM ontime
WHERE Year=2007
GROUP BY Carrier
ORDER BY c3 DESC
Metadata
Metadata
Assignees
Labels
No labels