【问题标题】:Is there anybody who can help me with mysql query?有没有人可以帮助我进行mysql查询?
【发布时间】:2020-02-07 15:38:33
【问题描述】:
SELECT 
    (SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '05:30:00' AND TIME < '18:30:00' GROUP BY Date) as daytime,
    (SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '18:30:00' AND TIME < '22:30:00' GROUP BY Date) as peaktime,
    (SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '22:30:00' OR TIME < '05:30:00' GROUP BY Date) offpeaktime, 
    Date 
FROM energy_logger 
GROUP BY Date 
ORDER BY ID DESC

这是我的查询! 而且我总是有一个问题,“子查询返回超过 1 行”.....

【问题讨论】:

  • 我认为您可能需要使用左连接中的子查询。
  • 这意味着SELECT SUM(kwh) FROM energy_logger WHERE TIME &gt;= '05:30:00' AND TIME &lt; '18:30:00' GROUP BY Date)(以及它下面的两个子查询)可能会在它们自己的结果中返回不止一行。因此,如何将其放入外部 SELECT 查询的单行中的单个字段中?这不合逻辑。这就是错误告诉你的。如果要使用子查询生成单个值,则必须确保子查询只能返回一行。但正如其他人所提到的,您实际上可能根本不需要子查询。
  • P.S.我更改了您的标签,因为这个问题只是关于 SQL。它与 PHP 或 XAMPP 无关。您可能会在应用程序的其他地方使用这些技术,但它们与此问题无关。如果您准确地标记您的问题,他们更有可能被具有合适技能的人看到来帮助您。如果您使用了错误的标签,您可能会获得更少的帮助,并且会惹恼那些试图阅读对他们毫无意义的问题的人!

标签: mysql sql group-by sum pivot


【解决方案1】:

我认为您正在寻找条件聚合:

select 
    date,
    sum(case when time '05:30:00' and time < '18:30:00' then kwh end) daytime,
    sum(case when time '18:30:00' and time < '22:30:00' then kwh end) peaktime,
    sum(case when time '22:30:00' or  time < '05:30:00' then kwh end) offpeaktime
from energy_logger 
group by date
order by date

这将为您提供每天 3 个不同时间段(白天、高峰时间、非高峰时间)的 kwh 总和。

【讨论】:

  • 让我试试,但我想你的答案就是我想要的!!
猜你喜欢
  • 2018-04-24
  • 2021-02-26
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 2019-08-24
相关资源
最近更新 更多