EN
PostgreSQL - count distinct values
0
points
In this article, we would like to show you how to count distinct values in PostgreSQL.
Quick solution:
SELECT COUNT(DISTINCT "column_name")
FROM "table_name";
SELECT COUNT("column1") AS "alias_name", "column2", "columnN"
FROM "table_name"
GROUP BY "columnN"
ORDER BY COUNT("column1") DESC;
Practical example
To show how to count distinct values, we will use the following table:
Note:
At the end of this article you can find database preparation SQL queries.
Example 1
In this example, we will count the number of unique countries in users
table.
Query:
SELECT COUNT(DISTINCT("country")) AS "unique_countries"
FROM "users";
Output:
Example 2
In this example, we will count the number of users in every (unique) country in descending order.
Query:
SELECT COUNT("name") AS "number of users", "country"
FROM "users"
GROUP BY "country"
ORDER BY COUNT("name") DESC;
Output:
Database preparation
create_tables.sql
file:
CREATE TABLE "users" (
"id" SERIAL,
"name" VARCHAR(100) NOT NULL,
"country" VARCHAR(15) NOT NULL,
PRIMARY KEY ("id")
)
ENGINE=InnoDB;
insert_data.sql
file:
INSERT INTO "users"
("name", "country")
VALUES
('Tom', 'Poland'),
('Chris', 'Spain'),
('Jack', 'Spain'),
('Kim', 'Vietnam'),
('Marco', 'Italy'),
('Kate', 'Spain'),
('Nam', 'Vietnam');