我想申请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
,并在一个查询中获取列表?
发布于 2013-04-16 08:12:24
一个想法:当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
SQL Fiddle
UUID被设计成一个在空间和时间上是全局唯一的数字。对UUID()的两个调用将生成两个不同的值,即使这些调用是在两台互不连接的计算机上执行的。
https://stackoverflow.com/questions/16031760
复制相似问题