假设我有一个sales
如下表:
ID | Price
----------------------
1 0.33
2 1.5
3 0.5
4 10
5 0.99
我想在一个查询中找到验证给定条件的行的比例。例如,如果条件为Price < 1
,则结果应为3/5 = 0.6。
到目前为止,我发现的唯一解决方法是:
SELECT
SUM(
CASE
WHEN Price < 1
THEN 1
WHEN Price >= 1
THEN 0
END
)/COUNT(*)
FROM sales
但是有没有办法做到这一点CASE
?
您可以使用IF
:
SELECT SUM(IF(Price < 1, 1, 0))/COUNT(*) FROM sales
-但与CASE
(您的逻辑是正确的)没有太大区别
您可能要使用WHERE
(仅合计价格<1)-但由于您使用的是总数COUNT,因此在您的情况下无效。另一种选择:分别获取总计数:
SELECT
COUNT(sales.Price)/total_count
FROM
sales
CROSS JOIN (SELECT COUNt(*) AS total_count FROM sales) AS c
WHERE
-- you're summing 1 or 0 depending of Price, so your sum is
-- just count where Price<1
sales.Price<1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句