GROUP BYの検証

グループ化を半角英字と日本語(かな)で検証した結果、正しい動作を確認しました。

半角英字の場合

SELECT
name1
, COUNT(*)
, SUM(price1)
FROM
t1
GROUP BY
name1
;

name1 | count | sum

                                        • -

b | 2 | 41
bb | 2 | 51
c | 2 | 61
cc | 2 | 71
a | 2 | 21
aa | 2 | 31
(6 rows)

日本語(かな)の場合、

SELECT
name2
, COUNT(*)
, SUM(price2)
FROM
t2
GROUP BY
name2
;

name2 | count | sum

                                        • -

うう | 2 | 71
い | 2 | 41
う | 2 | 61
ああ | 2 | 31
いい | 2 | 51
あ | 2 | 21
(6 rows)

テストデータです。T1が半角英字のテーブル。T2が日本語(かな)のテーブル。

CREATE TABLE T1
(
id1 INTEGER NOT NULL,
name1 VARCHAR(20) NOT NULL,
price1 INTEGER NOT NULL,
CONSTRAINT pk_id1 PRIMARY KEY (id1)
);

CREATE TABLE T2
(
id2 INTEGER NOT NULL,
name2 VARCHAR(20) NOT NULL,
price2 INTEGER NOT NULL,
CONSTRAINT pk_id2 PRIMARY KEY (id2)
);

INSERT INTO T1 (id1, name1, price1) VALUES (1,'a',10);
INSERT INTO T1 (id1, name1, price1) VALUES (2,'b',20);
INSERT INTO T1 (id1, name1, price1) VALUES (3,'c',30);
INSERT INTO T1 (id1, name1, price1) VALUES (4,'a',11);
INSERT INTO T1 (id1, name1, price1) VALUES (5,'b',21);
INSERT INTO T1 (id1, name1, price1) VALUES (6,'c',31);
INSERT INTO T1 (id1, name1, price1) VALUES (7,'aa',15);
INSERT INTO T1 (id1, name1, price1) VALUES (8,'bb',25);
INSERT INTO T1 (id1, name1, price1) VALUES (9,'cc',35);
INSERT INTO T1 (id1, name1, price1) VALUES (10,'aa',16);
INSERT INTO T1 (id1, name1, price1) VALUES (11,'bb',26);
INSERT INTO T1 (id1, name1, price1) VALUES (12,'cc',36);

INSERT INTO T2 (id2, name2, price2) VALUES (1,'あ',10);
INSERT INTO T2 (id2, name2, price2) VALUES (2,'い',20);
INSERT INTO T2 (id2, name2, price2) VALUES (3,'う',30);
INSERT INTO T2 (id2, name2, price2) VALUES (4,'あ',11);
INSERT INTO T2 (id2, name2, price2) VALUES (5,'い',21);
INSERT INTO T2 (id2, name2, price2) VALUES (6,'う',31);
INSERT INTO T2 (id2, name2, price2) VALUES (7,'ああ',15);
INSERT INTO T2 (id2, name2, price2) VALUES (8,'いい',25);
INSERT INTO T2 (id2, name2, price2) VALUES (9,'うう',35);
INSERT INTO T2 (id2, name2, price2) VALUES (10,'ああ',16);
INSERT INTO T2 (id2, name2, price2) VALUES (11,'いい',26);
INSERT INTO T2 (id2, name2, price2) VALUES (12,'うう',36);

昇順で並べて表示するには、ORDER BYを追加します。

SELECT
name1
, COUNT(*)
, SUM(price1)
FROM
t1
GROUP BY
name1
ORDER BY
name1
;

name1 | count | sum

                                        • -

a | 2 | 21
aa | 2 | 31
b | 2 | 41
bb | 2 | 51
c | 2 | 61
cc | 2 | 71
(6 rows)

SELECT
name2
, COUNT(*)
, SUM(price2)
FROM
t2
GROUP BY
name2
ORDER BY
name2
;

name2 | count | sum

                                        • -

あ | 2 | 21
ああ | 2 | 31
い | 2 | 41
いい | 2 | 51
う | 2 | 61
うう | 2 | 71
(6 rows)