首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表中的SQL cut结果

表中的SQL cut结果
EN

Stack Overflow用户
提问于 2011-09-25 21:00:58
回答 2查看 354关注 0票数 0

我有以下疑问:

代码语言:javascript
复制
    SELECT cust_id,cust_name,SUM(calls.duration) as duration
  FROM 
      calls, telephone

  WHERE calls.from_t_no = telephone.t_no
  AND
  calls.duration <=60

  group by telephone.cust_id, telephone.cust_name

它给出了以下结果;

代码语言:javascript
复制
cust_id cust_name duration
0123456789  Avi 18
1234567890  Benny   27
2345678901  Gadi    13
3456789012  Dalia   69
4567890123  Hilla   5
5678901234  Varda   14
7890123456  Haim    20
8901234567  Tali    20
9012345678  Yoram   46

我也有这样的疑问:

代码语言:javascript
复制
SELECT cust_id,cust_name,SUM(calls.duration) as duration 
      FROM calls ,telephone
      WHERE to_t_no = telephone.t_no
      AND
      calls.duration >=500
      group by telephone.cust_id, telephone.cust_name

它提供了以下结果:

代码语言:javascript
复制
cust_id cust_name   duration
2345678901  Gadi    50022
4567890123  Hilla   50000

第二个查询实际上是第一个查询应该匹配的另一个过滤器或条件。我不能将第二个查询包含在第一个查询中,因为它使用了不同的列。我需要从第一个查询中“减去”第二个查询。

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-25 21:12:02

如果你确实不能合并查询,你可以像这样连接结果:

代码语言:javascript
复制
SELECT T0.cust_id, T0.cust_name, T0.duration FROM

(  SELECT cust_id,cust_name,SUM(calls.duration) as duration
FROM 
    calls, telephone

WHERE calls.from_t_no = telephone.t_no
AND
calls.duration <=60

group by telephone.cust_id, telephone.cust_name) T0

JOIN

(SELECT cust_id,cust_name,SUM(calls.duration) as duration 
  FROM calls ,telephone
  WHERE to_t_no = telephone.t_no
  AND
  calls.duration >=500
  group by telephone.cust_id, telephone.cust_name) T1

ON T0.cust_id = T1.cust_id
票数 0
EN

Stack Overflow用户

发布于 2011-09-25 21:17:08

试着发布你的表格的完整结构,并描述你真正需要的东西。

如果我对问题的理解正确的话,你所暴露的条件是相互排斥的。我认为任何记录都不可能同时满足这两个条件,因为最终查询将如下所示:

代码语言:javascript
复制
SELECT cust_id,cust_name,SUM(calls.duration) as duration 
FROM calls ,telephone
WHERE 
    to_t_no = telephone.t_no
    AND calls.from_t_no = telephone.t_no
    AND calls.duration <=60
    AND calls.duration >=500
group by telephone.cust_id, telephone.cust_name;

如果你想要的是一个通用的解决方案来进行"query over a query“,你可以使用这样的句子:

代码语言:javascript
复制
SELECT field1, field2 FROM
    (SELECT field1, field2, ..., fieldn FROM table WHERE condition) AS filteredTable
WHERE anyCondition;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7545639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档