标签: having

对于大型桌子,有什么比"有数"更快的东西?

这是我的查询:

select word_id, count(sentence_id) 
from sentence_word 
group by word_id 
having count(sentence_id) > 100;
Run Code Online (Sandbox Code Playgroud)

表语句包含3个字段,wordid,sentenceid和主键id.它有350k +行.这个查询花了85秒钟,我想知道(希望,祈祷?)有一种更快的方法来找到所有超过100个句子的单词.

我已经尝试取出选择计数部分,只是做'有计数(1)',但都没有加快速度.

我很感激您可以借出的任何帮助.谢谢!

sql count query-optimization having

3
推荐指数
1
解决办法
2794
查看次数

将结果限制为仅一个值仅出现一次的行

我有一个比这里的示例更复杂的查询,但是它只需要返回某个字段在数据集中不会出现多次的行.

ACTIVITY_SK      STUDY_ACTIVITY_SK
100              200
101              201
102              200
100              203
Run Code Online (Sandbox Code Playgroud)

在此示例中,我不希望返回任何ACTIVITY_SK100的记录,因为ACTIVITY_SK在数据集中出现两次.

数据是映射表,并且在许多联接中使用,但是这样的多个记录意味着数据质量问题,因此我需要简单地从结果中删除它们,而不是在其他地方导致错误的连接.

SELECT 
   A.ACTIVITY_SK,
   A.STATUS,
   B.STUDY_ACTIVITY_SK,
   B.NAME,
   B.PROJECT
 FROM
   ACTIVITY A,
   PROJECT B
 WHERE 
   A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

SELECT 
   A.ACTIVITY_SK,
   A.STATUS,
   B.STUDY_ACTIVITY_SK,
   B.NAME,
   B.PROJECT
 FROM
   ACTIVITY A,
   PROJECT B
 WHERE 
   A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
 WHERE A.ACTIVITY_SK NOT IN
 (

  SELECT 
     A.ACTIVITY_SK,
     COUNT(*)
    FROM
      ACTIVITY A,
      PROJECT B
    WHERE 
    A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
    GROUP BY A.ACTIVITY_SK
    HAVING COUNT(*) > 1

 )
Run Code Online (Sandbox Code Playgroud)

但必须有一个较便宜的方式来做到这一点......

sql oracle aggregate having

3
推荐指数
1
解决办法
5388
查看次数

SQL - CASE WHEN计算不同的值

我需要显示每个'id'有多少不同的值.

它应该如下所示:

id    |  component_a | component_b | component_c
--------------------------------------------------
KLS11 |     none     |      one    |     none       
KLS12 |     one      |      one    |     none         
KLS13 |     several  |      one    |     none        
KLS14 |     one      |      one    |     one            
KLS15 |     one      |    several  |     several           
Run Code Online (Sandbox Code Playgroud)

我有下表(table_a):

id    |  component_a | component_b | component_c
--------------------------------------------------
KLS11 |              |      a      |            
KLS12 |       a      |      a      |              
KLS13 |       a      |      a      |             
KLS13 |       b      |      a      |               
KLS14 |       a …
Run Code Online (Sandbox Code Playgroud)

sql oracle count having case-when

3
推荐指数
1
解决办法
3万
查看次数

GROUP BY WITH HAVING (DISTINCT) : PHP , MYSQL

id | mid | pid | owgh | nwgh |
1    3      12    1.5    0.6
2    3      12    1.5    0.3
3    3      14    0.6    0.4
4    3      15    1.2    1.1
5    4      16    1.5    1.0
6    4      17    2.4    1.2 
7    3      19    3.0    1.4
Run Code Online (Sandbox Code Playgroud)

从上面我想要 nwgh 的中间和总和的总数及其相应的。id ex: mid=3 或 mid=4 但有 DISTINCT pid 但请注意 nwgh 的总和不应是 DISTINCT

因此,我的结果如下:

mid  | countmid            |   totalnwgh
3      4 (DISTINCT value)      3.8 (no DISTINCT it take both value of pid =12)
4 …
Run Code Online (Sandbox Code Playgroud)

mysql group-by sum count having

3
推荐指数
1
解决办法
6020
查看次数

SQL根据解析函数过滤查询结果

我想找到一种有效的方法来过滤RANK() OVERSQL 中的函数。

我有以下查询:

SELECT
    base.ITEM_SKU_NBR,
    RANK() OVER (ORDER BY SUM(base.NET_SLS_AMT) DESC) AS SLS_rank,
    RANK() OVER (ORDER BY COUNT(DISTINCT base.txn_id) DESC) AS txn_rank
FROM
    `my_table` base
GROUP BY
    1
Run Code Online (Sandbox Code Playgroud)

返回此结果集:

在此输入图像描述

现在我想过滤 is SLS_rank< 10 或txn_rankis < 10 的项目。理想情况下,我想在HAVING子句中执行此操作,如下所示:

SELECT
    base.ITEM_SKU_NBR,
    RANK() OVER (ORDER BY SUM(base.NET_SLS_AMT) DESC) AS SLS_rank,
    RANK() OVER (ORDER BY COUNT(DISTINCT base.txn_id) DESC) AS txn_rank
FROM
    `my_table` base
GROUP BY
    1
HAVING   
    SLS_rank < 10 OR txn_rank < 10
Run Code Online (Sandbox Code Playgroud)

但 bigquery …

sql having google-bigquery

3
推荐指数
1
解决办法
1839
查看次数

为什么当我使用having时,带有0的行会消失?

我有这个表:

create table series(
    serie       varchar(10),
    season          varchar(10),
    chapter     varchar(10),
    primary key ( serie, season, chapter)
);

insert into series values ('serie_1', 'season_1', 'Chap_1'),
                          ('serie_1', 'season_1', 'Chap_2'),              
              ('serie_1', 'season_2', 'Chap_1'),

              ('serie_2', 'season_1', 'Chap_1'),
              ('serie_2', 'season_2', 'Chap_1'),
              ('serie_2', 'season_2', 'Chap_2'),

              ('serie_3', 'season_1', 'Chap_1'),
              ('serie_3', 'season_2', 'Chap_1');

create table actua(
    idActor     varchar(10),
    serie       varchar(10),
    season      varchar(10),
    chapter     varchar(10),
    salary      numeric(6),
    foreign key ( serie, season, chapter) references series,
    primary key ( idActor, serie, season, chapter)
);

insert into actua values   ('A1', 'serie_1', …
Run Code Online (Sandbox Code Playgroud)

sql postgresql null coalesce having

3
推荐指数
1
解决办法
55
查看次数

mysql php查询HAVING子句

我试图让这个查询工作,但我得到这个错误:'having子句'中的未知列'zips.city'

`$query = "SELECT
    zips.*
    FROM
    zips
    HAVING
    zips.city LIKE '%$city%' 
    AND
    zips.stateabbr LIKE '%$state%' 
    LIMIT 1";
$result = mysql_query($query) or die (mysql_error());`

我的拉链表有一个城市列,所以我不知道问题是什么,我知道我访问数据库,因为我可以运行此查询没有错误:

$zip1query = "SELECT 
         zips.*
         FROM 
         zips
         WHERE
         zips.zip = '$zip'              
         ";

任何建议将不胜感激!谢谢!

php mysql clause having

2
推荐指数
1
解决办法
6139
查看次数

rollup 通过约束忽略组

+----+-------+-------+
| id | style | color |
+----+-------+-------+
|  1 |     1 | red   |
|  2 |     1 | blue  |
|  3 |     2 | red   |
|  4 |     2 | blue  |
|  5 |     2 | green |
|  6 |     3 | blue  |
+----+-------+-------+
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT style, COUNT(*) as count from t GROUP BY style WITH ROLLUP HAVING count > 1;
Run Code Online (Sandbox Code Playgroud)

产生:

+-------+-------+
| style | count |
+-------+-------+
|     1 | …
Run Code Online (Sandbox Code Playgroud)

mysql group-by rollup having

2
推荐指数
1
解决办法
1292
查看次数

sql-查找具有五个以上成员的每个部门的平均工资

不太确定如何获得这个。我有一个员工表,我需要找到平均工资。我知道我可以使用use avg()。但是,诀窍是我需要找到拥有5名以上职员的部门的平均值。我不确定是否应使用分组依据或使用方式。谢谢!

    CREATE TABLE STAFF (STAFF_ID                    CHAR(3),
                        STAFF_NAME              CHAR(20),
                        GENDER                  CHAR(6),
                        DEPARTMENT              CHAR(20),
                        BOSS_ID                 CHAR(3)
                        SALARY                  NUMBER(8,2));
Run Code Online (Sandbox Code Playgroud)

sql average having

2
推荐指数
1
解决办法
5万
查看次数

如何在SQL Server表中获取具有最大值的所有记录

MigratoryBirds在SQL Server表中的数据下面

birdType
1
4
4
4
5
5
5
3
Run Code Online (Sandbox Code Playgroud)

用于创建上表的SQL脚本:

/****** Object:  Table [dbo].[migratoryBirds]    Script Date: 20-Jul-17 8:01:02 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[migratoryBirds](
    [birdType] [int] NULL
) ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

我的目标是获得表中频率最高的鸟类.如果我编写存储过程并可以自由编写多个SQL查询,那么这并不困难,但我正在尝试使用单个SQL查询来实现它.我试图看看HavingSQL服务器的子句是否对我有任何帮助.

所以我写的第一个查询是:

select birdType, count(1) AS [birdCount]
from migratorybirds
group by birdType
Run Code Online (Sandbox Code Playgroud)

它给出了以下输出

birdType birdCount
1        1
3        1
4        3
5        3
Run Code Online (Sandbox Code Playgroud)

由于这是一个聚合的情况,所以我认为Having条款可以帮助我在这里筛选出频率最高的记录3.birdType4和5具有最高频率3.

所以,我增强了我的查询,如下所示:

select birdType, count(1) AS [birdCount] …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server having having-clause

2
推荐指数
1
解决办法
74
查看次数