簡體   English   中英

SUM()GROUP BY列的結果

[英]SUM() the results of GROUP BY column

表格'volcado':id,reserva,candidad

用以下查詢:

SELECT (CASE
         WHEN sum(cantidad) > 0 THEN 1
         WHEN sum(cantidad) <= 0 THEN 0
       END) AS suma 
FROM volcado
GROUP BY reserva

結果是:

╔══════╗
║ suma ║
╠══════╣
║  1   ║
║  1   ║
║  0   ║
║  1   ║
║  0   ║
╚══════╝

我需要查詢的結果將是:3

如何在同一查詢中對Suma的行進行SUM()?

我不使用它運行:

SELECT SUM(SELECT (CASE
        WHEN sum(cantidad) > 0 THEN 1
        WHEN sum(cantidad) <= 0 THEN 0
      END) AS suma FROM volcado GROUP BY reserva)
FROM volcado

錯誤:

子查詢返回1行以上

提前致謝。

試試這個

SELECT SUM(a.suma) from 
    (SELECT (CASE
        WHEN sum(cantidad) > 0 THEN 1
        WHEN sum(cantidad) <= 0 THEN 0
        END) AS suma FROM volcado GROUP BY reserva)a

這應該工作,將子查詢用作表而不是列。

SELECT SUM(suma) from 
    (SELECT (CASE
        WHEN sum(cantidad) > 0 THEN 1
        WHEN sum(cantidad) <= 0 THEN 0
        END) AS suma FROM volcado GROUP BY reserva)

您可以使用CTE:

;WITH cte AS
  (SELECT CASE
              WHEN sum(cantidad) > 0 THEN 1
              WHEN sum(cantidad) <= 0 THEN 0
          END suma
   FROM volcado
   GROUP BY reserva)
SELECT sum(suma)
FROM cte

您可以根據需要簡化查詢。 因此, having使用case ,不如使用:

SELECT COUNT(*)
FROM (SELECT reserva
      FROM volcado
      GROUP BY reserva
      HAVING SUM(cantidad) > 0
     ) r;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM