我想为GROUP BY
申请条件。
当条件city_id != 0
为真时,将列表分组。否则正常列表。
我使用了这个查询:
(
SELECT city_id, sum(sales) as counts
FROM product_sales
WHERE city_id !=0
GROUP BY city_id
)
UNION
(
SELECT city_id, sales
FROM product_sales
WHERE city_id =0
ORDER BY sales_id
)
任何人都可以帮我避开UNION
并在单个查询中获取列表吗?
答案 0 :(得分:4)
一个想法:GROUP BY
city_id
当它不为零时,否则模拟随机唯一值以便与UUID()
进行分组。因此,city_id = 0
的每一行都不会被分组。
select city_id, sum(sales)
from product_sales
group by
case when city_id = 0
then UUID()
else city_id
end
UUID被设计为在空间和全球范围内唯一的数字 时间。对UUID()的两次调用预计会产生两种不同的调用 值,即使这些调用是在两台独立的计算机上执行的 彼此没有联系。