草庐IT

MYSQL(特定条件下的SELECT)

coder 2023-10-19 原文

我是一个 MYSQL 初学者,我有一个查询问题:

我有两个表(callscallsfailed)。

  1. calls 有这些列( called_number, duration )。
  2. callsfailed 有这些列(called_number、release_reason)

让我们说电话表是:

+---------------+----------+
| called_number | duration |
+---------------+----------+
| 1010101       | 13       |
| 1010101       | 18       |
| 1010101       | 20       |
| 2020202       | 50       |
| 2020202       | 20       |
| 3030303       | 10       |
| 4040404       | 30       |
+---------------+----------+

callsfailed 表是:

+---------------+----------------+
| called_number | release_reason |
+---------------+----------------+
| 1010101       | -1             |
| 1010101       | -1             |
| 2020202       | -1             |
| 3030303       | 406            |
| 4040404       | 503            |
| 5050505       | -1             |
| 5050505       | -1             |
| 6060606       | -1             |
+---------------+----------------+

我想选择 called_number > 1,当它使持续时间小于 25 时,或者它使 release_reason = -1。超过 1 次。

BUT If the caller_number made a duration more than 25, don't select it even when it has a release_reason = -1.

所以结果将是:

+---------------+-------+
| called_number | count |
+---------------+-------+
| 1010101       | 3     |
| 5050505       | 2     |
+---------------+-------+

我的代码是:

(  SELECT called_number, duration, COUNT(*) count 
   FROM calls 
   GROUP BY called_number 
   Having COUNT(called_number) > 1 and duration < 25 
) 

UNION 

( SELECT called_number, release_reason, COUNT(*) count 
  FROM callsfailed 
  GROUP BY called_number 
  Having COUNT(called_number) > 1 and release_reason = -1 
)

最佳答案

可能是您正在寻找加入

  select t1.called_number, t1.duration,  t1.count 
  from 

  (  SELECT called_number, duration, COUNT(*) count 
     FROM calls 
     GROUP BY called_number 
     Having COUNT(called_number) > 1 and duration < 25 
  ) t1

  left join 

  ( SELECT called_number, release_reason, COUNT(*) count 
    FROM callsfailed 
    GROUP BY called_number 
    Having COUNT(called_number) > 1 and release_reason = -1 
  )  t2 on t1.called_number = t2.called_number

但是对于工会来说,你可能需要 where for duration e release_reason

      SELECT called_number, duration, COUNT(*) count 
      FROM calls 
      WHERE duration < 25 
      GROUP BY called_number 
      Having COUNT(called_number) > 1 

      union 

      SELECT called_number, release_reason, COUNT(*) count 
      FROM callsfailed 
      GROUP BY called_number 
      where release_reason = -1 
      Having COUNT(called_number) > 1 

关于MYSQL(特定条件下的SELECT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40390308/

有关MYSQL(特定条件下的SELECT)的更多相关文章

  1. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  2. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  3. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  4. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  5. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  6. Ruby - 如何在读取文件时跳过/忽略特定行? - 2

    在读取/解析文件(使用Ruby)时忽略某些行的最佳方法是什么?我正在尝试仅解析Cucumber.feature文件中的场景,并希望跳过不以Scenario/Given/When/Then/And/But开头的行。下面的代码有效,但它很荒谬,所以我正在寻找一个聪明的解决方案:)File.open(file).each_linedo|line|line.chomp!nextifline.empty?nextifline.include?"#"nextifline.include?"Feature"nextifline.include?"Inorder"nextifline.include?

  7. ruby-on-rails - 事件记录 : Select max of limit - 2

    我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).

  8. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  9. ruby-on-rails - 使用包含多个关联和单独的条件 - 2

    我的Gallery模型中有以下查询:media_items.includes(:photo,:video).rank(:position_in_gallery)我的图库模型有_许多媒体项,每个都有一个照片或视频关联。到目前为止,一切正常。它返回所有media_items包括它们的photo或video关联,由media_item的position_in_gallery属性排序。但是我现在需要将此查询返回的照片限制为仅具有is_processing属性的照片,即nil。是否可以进行相同的查询,但条件是返回的照片等同于:.where(photo:'photo.is_processingIS

  10. ruby-on-rails - 在 haml View 中重构条件 - 2

    除了可访问性标准不鼓励使用这一事实指向当前页面的链接,我应该怎么做重构以下View代码?#navigation%ul.tabbed-ifcurrent_page?(new_profile_path)%li{:class=>"current_page_item"}=link_tot("new_profile"),new_profile_path-else%li=link_tot("new_profile"),new_profile_path-ifcurrent_page?(profiles_path)%li{:class=>"current_page_item"}=link_tot("p

随机推荐