123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- #
- # Check that decimal columns can properly be joined
- #
- #
- # Different scales, same precision
- #
- > CREATE TABLE d5_2 (f1 DECIMAL(5,2));
- > INSERT INTO d5_2 VALUES (12.34);
- > CREATE TABLE d6_2 (f1 DECIMAL(6,2));
- > INSERT INTO d6_2 VALUES (12.34);
- > SELECT * FROM d5_2 JOIN d6_2 ON (d5_2.f1 = d6_2.f1);
- 12.34 12.34
- #
- # Same scale, different precisions
- #
- > CREATE TABLE d5_3(f1 DECIMAL(5,3));
- > INSERT INTO d5_3 VALUES (12.340);
- > SELECT * FROM d5_2 JOIN d5_3 ON (d5_2.f1 = d5_3.f1);
- 12.34 12.34
- #
- # Use of CAST in the join condition
- #
- > CREATE TABLE d5_3a (f1 DECIMAL(5,3));
- > INSERT INTO d5_3a VALUES (12.341);
- # cast to reduce precision
- > SELECT * FROM d5_2 JOIN d5_3a ON (d5_2.f1 = d5_3a.f1::DECIMAL(5,2));
- 12.34 12.341
- > SELECT * FROM d5_2 JOIN d5_3a ON (d5_2.f1 = ROUND(d5_3a.f1,2));
- 12.34 12.341
- # cast to increase precision
- > SELECT * FROM d5_2 JOIN d5_3 ON (d5_2.f1::DECIMAL(5,4) = d5_3.f1);
- 12.34 12.34
- #
- # Join between string and decimal
- #
- > CREATE TABLE s (f1 STRING);
- > INSERT INTO s VALUES ('012.34'), ('12.34'), ('12.340');
- > SELECT * FROM d5_2 JOIN s ON (d5_2.f1 = s.f1::decimal);
- 12.34 012.34
- 12.34 12.34
- 12.34 12.340
- #
- # Join between integer and decimal
- #
- > CREATE TABLE d5_2b (f1 DECIMAL(5,2));
- > INSERT INTO d5_2b VALUES (12);
- > CREATE TABLE i (f1 INTEGER);
- > INSERT INTO i VALUES (12);
- > SELECT * FROM d5_2b JOIN i ON d5_2b.f1 = i.f1;
- 12 12
- #
- # Join between float and decimal
- #
- > CREATE TABLE f (f1 DOUBLE);
- > INSERT INTO f VALUES (12.34);
- > SELECT * FROM d5_2 JOIN f ON d5_2.f1 = f.f1
- 12.34 12.34
- #
- # Join using an arithmetic expression
- #
- > CREATE TABLE d5_2c (f1 DECIMAL(5,2));
- > INSERT INTO d5_2c VALUES (123.4);
- > SELECT * FROM d5_2 JOIN d5_2c ON (d5_2.f1 = d5_2c.f1 / 10);
- 12.34 123.4
|