标签: having

sql GROUP HAVING选择

我想为所有具有相同标题的产品投影pid索引,因为我使用以下作为子查询.

产品(pid,标题)

SELECT p.title
FROM product p
group by title
HAVING ( COUNT(p.title) > 1 )
Run Code Online (Sandbox Code Playgroud)

这会输出重复的标题,但我如何预测pid的?

sql group-by having

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

Mysql - 查找仅由两个用户持有的对话

我有一个名为参与者的表,其中包含以下字段:

  • ID
  • 用户身份
  • conversation_id

背景是与至少两个或更多参与者进行对话.我想找到一个仅由两个指定用户持有的对话,而对话中没有其他用户.

我想出了以下内容:

SELECT * 
FROM participants
WHERE user_id = 1 OR user_id = 2
GROUP BY conversation_id
HAVING COUNT(*) = 1
Run Code Online (Sandbox Code Playgroud)

鉴于此内容

参与者表格图像http://s12.postimage.org/af4xrfoax/table.png

您可以看到用户1和2与用户3(对话1)共享对话,但也只有一个对话(对话2).

上面的查询实际上返回了正确的conversation_id(即2) - 但我不确定查询是否正确.当我说它HAVING COUNT(*) = 2返回对话1时,我不知道为什么.直觉上我使用了计数 - 如果设置为1似乎也可以工作 - 但我不确定它在这种情况下是做什么的.

查询是否正确?如果是这样,为什么?如果没有,我需要更改什么才能使其正常工作?

mysql sql count having

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

如何在linq中构造一个具有最大值的having语句?

我有一组包含事务数据的对象.此数据集具有3级父子关系,其级别为:项目>阶段>事务.对于每个项目和阶段,将有多个交易.

class CostElement
{
    string ProjectNumber { get; set; }
    string Stage { get; set; }
    string DerivedCostElement { get; set; }
    DateTime? Date { get; set; }
    decimal? Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要找到的是一个唯一的成本要素列表(DerivedCostElement),其中包含在任何给定单个项目中使用它的最大次数.即计算每个项目出现的阶段数,然后选择最大值.

到目前为止我尝试过的是:

//count all cost elements per project
var aggregateQuery = from ce in _costElements
                     group ce by new { ce.ProjectNumber, ce.Stage, ce.DerivedCostElement }
                     into g
                     select new
                     {
                         g.Key.DerivedCostElement,
                         g.Key.ProjectNumber,
                         g.Key.Stage
                     };

//select cost elements having max count
var countQuery = from …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by having

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

cakephp有条件找到

有人可以帮助我,并告诉我如何插入BEETWEN在cakephp中有clausule

我的编码的例子:

$zaduzenja = $this->Zaduzenja->find('all',array(
                'conditions' => array(
                        'Zaduzenja.placeno' => 0 ),
                'fields' => array('Zaduzenja.obveznici_id', 'SUM(Zaduzenja.zaduzenje) as dug'),
                'group' => 'Zaduzenja.obveznici_id HAVING array(dug BETWEEN ? AND ? => array('.$iznosOd,$iznosDo)'

        ));
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我只想要计算列"挖"来检查Dug> = $ temp 1 AND Dug <= $ temp2,但这只能在有clausule的组中

cakephp find having

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

如何从数据库中选择所有不同的行?

这将给我所有独特的条目:

select distinct (origin, destination) from mytable

但是如何选择非唯一的所有路线呢?所以我得到关于这两个字段的共同行?

sql postgresql select group-by having

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

您可以在GROUP BY中未列出的列上使用HAVING子句吗?

我有这个问题,我一直在努力,我找到的解决方案是每个Pecheur(渔夫)获得AVERAGE结果,是的,这有点可能是一个学校项目.我基本上需要每个渔民的名字和地址,每个渔民在每份合同(CONTRAT)上至少收取两项费用(FRAIS),并且在2000年至2002年期间每年平均需要2次捕鱼(贵重).必要的表列在from和JOIN中,我的问题是,我可以使用HAVING AVG(x)虽然x未列在Select也不在group by中,但只出现在FROM部分的表中.请注意,我没有真正的数据库来测试查询.

SELECT  pecheur.NOM as nom_Pecheur, 
        pecheur.ADRESSE as adresse

FROM    TP1_PECHEUR as pecheur
        INNER JOIN TP1_CONTRAT as contrat on pecheur.ID_PECHEUR=contrat.ID_PECHEUR
        INNER JOIN TP1_FRAIS_CONTRAT as frais_contrat on contrat.ID_CONTRAT=frais_contrat.ID_CONTRAT
        INNER JOIN TP1_FRAIS as frais on frais_contrat.ID_FRAIS=frais.ID_FRAIS
        INNER JOIN TP1_DECLARATION_PRISE as declaration_prise on pecheur.ID_PECHEUR=declaration_prise.ID_PECHEUR
        INNER JOIN TP1_PRISE as prise on declaration_prise.ID_DECLARATION_PRISE=prise.ID_DECLARATION_PRISE

WHERE   frais_contrat.ID IN ( SELECT  TP1_FRAIS_CONTRAT.ID, COUNT(*) as NB_FRAIS
                              FROM    TP1_FRAIS_CONTRAT
                              GROUP BY TP1_FRAIS_CONTRAT.ID
                              HAVING NB_FRAIS >= 2 )
        AND declaration_prise.DATE_DECLARATION BETWEEN '01-01-2000' AND '31-12-2002'

GROUP BY  nom_Pecheur

HAVING    AVG(prise.NOMBRE_POISSON) > …
Run Code Online (Sandbox Code Playgroud)

sql oracle group-by having

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

mysql 具有...&gt; avg() 无法按预期工作

我创建了两个视图来帮助计算 user_diary_number,然后选择日记数 > 用户总 user_diary_number 平均值的用户。

两个视图如下:

create view user_diary_number as
(
select user_id,count( distinct diary_id ) as diary_num
from user_diary

group by user_id
);
Run Code Online (Sandbox Code Playgroud)

第二次使用havingand avg

create view hw_diary as
(
select u.user_id, u.realname, ud.diary_num, school.school_name
from (user as u cross join user_diary_number as ud on u.user_id = ud.user_id )cross join school on u.school_id = school.school_id
having diary_num > avg(diary_num)

);
Run Code Online (Sandbox Code Playgroud)

现在的问题是什么,第二个视图只有 1 行结果。当然,我们有超过 1 个用户的日记数量 > 平均 diary_num。事实上,我总共有 251 篇日记和 103 个用户。一些用户有9、4、5本日记。但结果只有 1 个用户拥有 3 …

mysql average having

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

SQL Server 如何在 HAVING 子句中使用 COUNT DISTINCT(*)?

我有一个程序可以计算所有唯一的 [customerid] 值并将它们显示在 SELECT 列表中。我正在尝试使用 HAVING 子句对 [customerid] 进行排序,其中它只有“> 1”,但 SQL 不允许我在 HAVING 中使用 DISTINCT COUNT。在我看来,HAVING 应该与 COUNT 一起使用是有道理的,但它没有:

USE MyCompany;
GO
SELECT DISTINCT COUNT(customerid) AS NumberOfOrdersMade, customerid AS 
CustomerID
FROM tblItems_Ordered
GROUP BY customerid
HAVING DISTINCT COUNT(customerid) > 1
GO
Run Code Online (Sandbox Code Playgroud)

sql-server having

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

在没有 GROUP BY 的情况下使用 HAVING 无法按预期工作

我开始学习SQL Server,在msdn中找到的文档是这样的

HAVING 通常与 GROUP BY 子句一起使用。当不使用 GROUP BY 时,存在一个隐式的单个聚合组。

这让我认为我们可以在没有 groupBy 子句的情况下使用having,但是当我尝试进行查询时我无法使用它。

我有一张这样的桌子

CREATE TABLE [dbo].[_abc]
(
    [wage] [int] NULL
) ON [PRIMARY]
GO

INSERT INTO [dbo].[_abc] (wage)
VALUES (4), (8), (15), (30), (50) 
GO
Run Code Online (Sandbox Code Playgroud)

现在,当我运行此查询时,出现错误

select * 
from [dbo].[_abc]
having sum(wage) > 5
Run Code Online (Sandbox Code Playgroud)

错误:

在此输入图像描述

sql sql-server group-by having

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

按照IN子句的顺序查询数据

select osmid,ST_X(shape),ST_Y(shape) 
from osmpoints 
where (osmpoints.osmid, osmpoints.osmtimestamp) 
     IN  (select osmid,MAX(osmtimestamp) 
          from osmPoints 
          GROUP BY osmid 
          Having MAX(osmtimestamp) <= '2019-09-16T01:23:55Z' 
            AND osmid in ('4426786454','1861591896','1861591869','1861591895',
                          '4426786455','2038185115','1861591853','6797739995',
                          '2299605892','6797739994','1861591898','2038185111','4426786454'));
Run Code Online (Sandbox Code Playgroud)

当我运行这个查询时,我得到基于 osmid 列的排序行。但我的问题是如何按在 IN 子句中使用的 osmid 的顺序获取行?

sql postgresql group-by having

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

标签 统计

having ×10

group-by ×6

sql ×6

mysql ×2

postgresql ×2

sql-server ×2

average ×1

c# ×1

cakephp ×1

count ×1

find ×1

linq ×1

oracle ×1

select ×1