繁体   English   中英

在MySQL中使用单个查询获取3个不同SUM的“最佳”方法是什么

[英]What is the “best” way to get 3 different SUM using a single query in MYSQL

这似乎是主观的,但不是主观的。

鉴于:

Table with the ff. field:

 - userid
 - breakstart
 - breakend
 - minutes
 - breaktype

目标:获取特定user每种中断类型的SUM() ,包括breakstartbreakend

到目前为止,我所做的是:我能想到的最简单的方法是执行3个单独的查询,就像这样...

SELECT SUM(minutes) as totalbreak 
FROM `breaklog`
WHERE
    userid = <some userid>
      AND
    DATE(breakstart) = "2015-06-11"
      AND
    DATE(breakend) = "2015-06-11"
        AND
    breaktype = "1"
# just feed breaktype with valid types i.e. ("1", "2", "3")

是否只是想知道是否有更好的方法可以实现我的目标,可能只需要一个查询? 甚至有可能吗? 还是获得所有breaktypes并在SQL引擎之外进行过滤是更好的选择, breaktypes在后端使用PHP。

在此先感谢您的所有投入。

做一个GROUP BY

SELECT breaktype, SUM(minutes) as totalbreak 
FROM `breaklog`
WHERE
    userid = <some userid>
      AND
    DATE(breakstart) = "2015-06-11"
      AND
    DATE(breakend) = "2015-06-11"
        AND
    breaktype IN ("1", "2", "3")
group by breaktype

您也可以与Group by Have一起尝试

SELECT breaktype, SUM(minutes) as totalbreak 
FROM breaklog
WHERE
    userid = <some userid>
      AND
    DATE(breakstart) = "2015-06-11"
      AND
    DATE(breakend) = "2015-06-11"
group by breaktype
Having breaktype IN (1, 2,3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM