diff --git a/cmd/postgres_exporter/postgres_exporter.go b/cmd/postgres_exporter/postgres_exporter.go
index fea2e2b2..0b56e768 100644
--- a/cmd/postgres_exporter/postgres_exporter.go
+++ b/cmd/postgres_exporter/postgres_exporter.go
@@ -282,10 +282,12 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
 	},
 	"pg_stat_activity": {
 		map[string]ColumnMapping{
-			"datname":         {LABEL, "Name of this database", nil, nil},
-			"state":           {LABEL, "connection state", nil, semver.MustParseRange(">=9.2.0")},
-			"count":           {GAUGE, "number of connections in this state", nil, nil},
-			"max_tx_duration": {GAUGE, "max duration in seconds any active transaction has been running", nil, nil},
+			"datname":          {LABEL, "Name of this database", nil, nil},
+			"state":            {LABEL, "connection state", nil, semver.MustParseRange(">=9.2.0")},
+			"usename":          {LABEL, "connection usename", nil, nil},
+			"application_name": {LABEL, "connection application_name", nil, nil},
+			"count":            {GAUGE, "number of connections in this state", nil, nil},
+			"max_tx_duration":  {GAUGE, "max duration in seconds any active transaction has been running", nil, nil},
 		},
 		true,
 		0,
diff --git a/cmd/postgres_exporter/queries.go b/cmd/postgres_exporter/queries.go
index b17420d2..14c14b4f 100644
--- a/cmd/postgres_exporter/queries.go
+++ b/cmd/postgres_exporter/queries.go
@@ -137,6 +137,8 @@ var queryOverrides = map[string][]OverrideQuery{
 			SELECT
 				pg_database.datname,
 				tmp.state,
+				tmp2.usename,
+				tmp2.application_name,
 				COALESCE(count,0) as count,
 				COALESCE(max_tx_duration,0) as max_tx_duration
 			FROM
@@ -153,9 +155,11 @@ var queryOverrides = map[string][]OverrideQuery{
 				SELECT
 					datname,
 					state,
+					usename,
+					application_name,
 					count(*) AS count,
 					MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS max_tx_duration
-				FROM pg_stat_activity GROUP BY datname,state) AS tmp2
+				FROM pg_stat_activity GROUP BY datname,state,usename,application_name) AS tmp2
 				ON tmp.state = tmp2.state AND pg_database.datname = tmp2.datname
 			`,
 		},
@@ -165,9 +169,11 @@ var queryOverrides = map[string][]OverrideQuery{
 			SELECT
 				datname,
 				'unknown' AS state,
+				usename,
+				application_name,
 				COALESCE(count(*),0) AS count,
 				COALESCE(MAX(EXTRACT(EPOCH FROM now() - xact_start))::float,0) AS max_tx_duration
-			FROM pg_stat_activity GROUP BY datname
+			FROM pg_stat_activity GROUP BY datname,usename,application_name
 			`,
 		},
 	},