Каждый неагрегированный столбец должен появляться в предложении GROUP BY
.Это стандарт в ANSI SQL, хотя в древних версиях MySQL он был слабым.
Подумайте об этом: если вы SELECT
столбец, но не GROUP BY
, то как надежно будет работать СУРБД?выбрать, какое значение в группе должно отображаться?
Возможные решения включают в себя:
- добавить все другие неагрегированные столбцы к предложению
GROUP BY
- использовать агрегирующие функции для всех исключенных столбцов
pu_ward_name
.Например, MAX () и MIN () являются дружественными для строк (в отличие от SUM ()).
Первое решение:
SELECT
pu.pu_ward_name,
entry_date,
pu.o_code,
pu.pu_lga_name,
pu.pu_code,
pu.pu_ward_code,
pu.pu_lga_code,
pu.pu_voters_reg_count,
SUM(total_vote_cast) AS total_vote_cast,
SUM(apc_total_vote) AS apc_total_vote,
SUM(pdp_total_vote) AS pdp_total_vote,
SUM(adp) AS adp
FROM
post_election_info r
LEFT JOIN polling_unit pu ON r.ward_name = pu.pu_ward_name
WHERE lga_name = 'BORIPE'
GROUP BY
pu.pu_ward_name,
entry_date,
pu.o_code,
pu.pu_lga_name,
pu.pu_code,
pu.pu_ward_code,
pu.pu_lga_code,
pu.pu_voters_reg_count
Второе решение:
SELECT
pu.pu_ward_name,
MAX(entry_date) AS entry_date,
MAX(pu.o_code) AS o_code,
MAX(pu.pu_lga_name) AS pu_lga_name,
MAX(pu.pu_code) AS pu_code,
MAX(pu.pu_ward_code) AS pu_ward_code,
MAX(pu.pu_lga_code) AS pu_lga_code,
MAX(pu.pu_voters_reg_count) AS pu_voters_reg_count,
SUM(total_vote_cast) AS total_vote_cast,
SUM(apc_total_vote) AS apc_total_vote,
SUM(pdp_total_vote) AS pdp_total_vote,
SUM(adp) AS adp
FROM
post_election_info r
LEFT JOIN polling_unit pu ON r.ward_name = pu.pu_ward_name
WHERE lga_name = 'BORIPE'
GROUP BY
pu.pu_ward_name