Tôi đoán là bạn không thực sự muốn GROUP BY
một số sản phẩm.
Câu trả lời cho: "Có cách nào để GROUP BY
không bí danh cột chẳng hạn như some_product trong trường hợp này hay tôi có cần đặt điều này vào một truy vấn con và nhóm trên đó không? " là: Bạn không thể GROUP BY
một bí danh cột.
SELECT
mệnh đề, nơi bí danh cột được chỉ định, không được xử lý cho đến sau GROUP BY
mệnh đề. Chế độ xem nội tuyến hoặc biểu thức bảng chung (CTE) có thể được sử dụng để cung cấp kết quả cho việc nhóm.
Chế độ xem nội tuyến:
select ...
from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... ) T
group by some_product ...
CTE:
with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... )
select ...
from T
group by some_product ...