I'm a beginner in SQL and I use PostgreSQL. My database is a list of real estate transactions, 1 row = 1 sale. Here is a description of my tables :
CREATE TABLE adresse (
id SERIAL,
num_voie SMALLINT,
bis_ter VARCHAR(10),
type_voie VARCHAR(30),
voie VARCHAR(50),
cp VARCHAR(10),
ville VARCHAR(100));
CREATE TABLE bien(
id SERIAL,
type_bien VARCHAR(30),
surf_bien SMALLINT,
nbr_piece SMALLINT);
CREATE TABLE vente (
id SERIAL,
date_vente DATE,
prix_vente INTEGER,
id_adresse INTEGER,
id_bien INTEGER);
Also, 'id_adresse' is a FK referencing adresse (id) and 'id_bien' is a FK referencing bien (id).
Here is my problem : when I try to calculate the rate of evolution of sales between the first and the second quarter with this query :
WITH vente_T1 AS (
SELECT count(*) FROM vente WHERE date_vente BETWEEN '2020-01-01' AND '2020-03-31'),
vente_T2 AS (
SELECT count(*) FROM vente WHERE date_vente BETWEEN '2020-04-01' AND '2020-06-30')
SELECT vente_T2-vente_T1 FROM vente_T1, vente_T2;
I have this error :
ERROR: operator does not exist: record - record
LINE 5: SELECT vente_T2-vente_T1 FROM vente_T1, vente_T2;
HINT: No operator matches the given name and argument types.
You might need to add explicit type casts.
SQL state: 42883 Character: 216
I have seen in another topic "This was due to the WHERE clause contains String value instead of integer value."
But I don't know how I can calculate the rate of evolution of sales without specify dates.