簡體   English   中英

MySql組中的子查詢

[英]Subquery in MySql group by

我有一個查詢:

SELECT round(addTime/qty, 0) AS col1,
       sum(qty) AS col2,
       cId AS Id
FROM MyTable
WHERE qty > 0
GROUP BY round(addTime/qty, 0), cId
ORDER BY round(addTime/qty, 0)

但是我必須用

SUM(CASE WHEN qty = 1 THEN 1 ELSE DATEDIFF(second,startTime,endTime) END)/qty, 0)

當我這樣做時:

SELECT round(SUM(case when qty = 1 then 1 else DATEDIFF(second,startTime,endTime) end)/qty, 0) AS col1,
sum(qty) AS col2,
cId
FROM MyTable
WHERE qty > 0
GROUP BY round(SUM(case when qty = 1 then 1 else
DATEDIFF(second,startTime,endTime) end)/qty, 0)/qty, 0), cId
ORDER BY round(SUM(case when qty = 1 then 1 else DATEDIFF(second,startTime,endTime) end)/qty, 0)/qty, 0)

我懂了

Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause.

我的想法是,我可以將該新查詢用作變量,然后在需要的地方使用它,但是隨后我遇到了MySql語法的麻煩。

預先感謝!

嘗試使用from子句中的子查詢:

選擇* from(從myTable中選擇round(...)作為col1)作為tmp,其中...按tmp.col1分組

from子句中的子查詢

SELECT *
FROM (
    SELECT 
        round(SUM(case when qty = 1 then 1 else DATEDIFF(second, startTime,endTime) end)/qty, 0) AS col1, 
        sum(qty) AS col2, 
        cId
    FROM MyTable
    WHERE qty > 0
) AS t
GROUP BY t.col1, t.cId
ORDER BY t.col1

另外我不確定,但是您的DIFFTIME函數是否不同於MySQL DIFFTIME

暫無
暫無

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

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