当前位置: 首页 > 知识库问答 >
问题:

如何统一两个SQL查询

牟黎昕
2023-03-14

我有两个SQL查询,它们都是分开工作的,但是当我尝试统一下摆时,我只有问题。

查询1:

SELECT Day( funct_consumatori.timestamp ) AS numar_zi, ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) AS ore_functionare, ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) AS consum, ROUND( ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) * pret_energie.pret, 2 ) AS estimare
FROM funct_consumatori
INNER JOIN consumatori ON consumatori.id = funct_consumatori.consumator
INNER JOIN pret_energie ON pret_energie.id =1
WHERE Year( funct_consumatori.timestamp ) = Year(
CURRENT_TIMESTAMP )
AND Month( funct_consumatori.timestamp ) = Month(
CURRENT_TIMESTAMP )
GROUP BY numar_zi DESC

查询 2:

SELECT Day( ambienta.timestamp ) AS numar_zi, TRUNCATE( AVG( temperatura ) , 1 ) AS temp_med, MIN( temperatura ) AS temp_min, MAX( temperatura ) AS temp_max, TRUNCATE( AVG( umiditate ) , 1 ) AS umid_medie
FROM ambienta
INNER JOIN consumatori AS c2 ON c2.id = '1'
INNER JOIN pret_energie AS pe ON pe.id = '1'
WHERE Year( ambienta.timestamp ) = Year(
CURRENT_TIMESTAMP )
AND Month( ambienta.timestamp ) = Month(
CURRENT_TIMESTAMP )
GROUP BY numar_zi DESC

如何根据numar_zi(内部一)统一它们?

共有1个答案

邓子濯
2023-03-14

我不知道你的表格和数据,但遵循SQL可能有用。

select q1.numar_zi
        ,q1.ore_functionare
        ,q1.consum
        ,q1.estimare
        -- value of q2 start 
        ,q2.numar_zi
        ,q2.temp_med
        ,q2.temp_min
        ,q2.temp_max
        ,q2.umid_medie
from 
    (
    SELECT Day( funct_consumatori.timestamp ) AS numar_zi
    , ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) AS ore_functionare
    , ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) AS consum
    , ROUND( ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) * pret_energie.pret, 2 ) AS estimare
    FROM funct_consumatori
    INNER JOIN consumatori ON consumatori.id = funct_consumatori.consumator
    INNER JOIN pret_energie ON pret_energie.id =1
    WHERE Year( funct_consumatori.timestamp ) = Year(
    CURRENT_TIMESTAMP )
    AND Month( funct_consumatori.timestamp ) = Month(
    CURRENT_TIMESTAMP )
    GROUP BY numar_zi DESC
    ) q1

INNER JOIN

    (
    SELECT Day( ambienta.timestamp ) AS numar_zi
    , TRUNCATE( AVG( temperatura ) , 1 ) AS temp_med
    , MIN( temperatura ) AS temp_min
    , MAX( temperatura ) AS temp_max
    , TRUNCATE( AVG( umiditate ) , 1 ) AS umid_medie
    FROM ambienta
    INNER JOIN consumatori AS c2 ON c2.id = '1'
    INNER JOIN pret_energie AS pe ON pe.id = '1'
    WHERE Year( ambienta.timestamp ) = Year(
    CURRENT_TIMESTAMP )
    AND Month( ambienta.timestamp ) = Month(
    CURRENT_TIMESTAMP )
    GROUP BY numar_zi DESC
    ) q2
on
    q1.numar_zi = q2.numar_zi

请根据您的RDMS进行更改(如有必要),但请记住,如果您想要连接两个查询,请使用以下查询

select t1.Id, t1.Col1, t1.Col2, t2.Id, t2.Col1, t2.Col2 
from 
    (SELECT Id, COUNT(*) AS Col1, Col2 FROM Table2 GROUP BY Id) t1
INNER JOIN -- or, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN .... 
    (SELECT Id, COUNT(*) AS Col1, Col2 FROM Table2 GROUP BY Id) t2
on
    t1.Id= t2.Id
 类似资料:
  • 问题内容: 如何合并这两个SQL语句? 两个表中都存在hits10,hits11和hits12。 问题答案: 使用UNION查询-只需在两个查询之间填入“ UNION”即可: 更新 将联合包装在另一个查询中:

  • 问题内容: 我有一个库存表,我想创建一个报告,以显示订购商品的频率。 “库存”表: 基本上,我需要将这两个查询结合在一起。 查询打印库存余额: 打印销售统计信息的查询 我认为某种JOIN可以完成这项工作,但我不知道如何将查询粘合在一起。 所需的输出: 这仅是示例。也许我将需要添加更多条件,因为有更多列。是否存在将多个查询组合在一起的通用技术? 问题答案:

  • 问题内容: 这对我来说看起来很奇怪: 是一个临时表,但是其余的对我来说毫无意义。 你怎么能有两个子句? 问题答案: 从DELETE的文档中可以看出,它可以包含两个子句。 第一个: FROM:是可选关键字,可以在DELETE关键字和目标table_or_view_name或rowset_function_limited之间使用。 第二个: :指定一个附加的FROM子句。Transact- SQL的D

  • 问题内容: 我想同时计算一个表中的记录总数和符合某些条件的记录总数。我可以使用两个单独的查询来完成这些操作: 有没有一种方法可以将它们组合成一个查询,以便在一行中得到两个字段? 如果没有,我可以发出两个查询并将它们包装在一个事务中,以便它们保持一致,但是我希望使用一个查询来完成。 编辑:我最关心原子性;如果需要两个子SELECT语句就可以,只要某个地方有INSERT,它就不会使两个响应不一致。 编

  • 金数据作为自动化收集、整理数据的工具,同时也拥有强大的对外查询系统,让数据可以被用户查询。 数据来源:表单或 Excel 在金数据中,数据一般来源于两处,一是通过发布的表单收集,二是通过 Excel 导入,金数据拥有从 Excel 直接创建表单的能力,点击「创建表单」——「从 Excel 创建表单」,选择 Excel 文件即可。 查询设置 在表单「设置」——「结果分享」处可以看到对外查询的设置界面

  • 我需要连接来自两个不同表的数据,如下所示。仅使用一个sql查询就可以做到这一点吗?如果“key”和“name”在两个表上,那么它们是相同的。表1中的“状态”始终为“-”,表2中的“T”。此外,两个表上的“名称”和“comp”都匹配(例如:Name3-C和Name4-B)<我尝试过“联合”和“加入”,但还没有解决办法! 表1 表2 结果应该是。。。 提前谢谢!