标签: having

在HAVING子句之后可以有一个WHERE子句吗?

是否可以在HAVING子句后使用WHERE子句?

我想到的第一件事是子查询,但我不确定.

PS如果答案是肯定的,你能举一些例子吗?

sql where having

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

MySQL GROUP BY和HAVING

我正在根据列X对结果进行分组,并且我希望返回组中具有最高列Y值的行.

SELECT * 
FROM   mytable 
GROUP  BY col1 
HAVING col2 >= (SELECT MAX(col2) 
                FROM   mytable AS mytable2 
                WHERE  mytable2.col1 = mytable.col1 GROUP BY mytable2.col1) 
Run Code Online (Sandbox Code Playgroud)

我想优化上面的查询.没有子查询是否可行?

我找到了解决方案,它比你想象的更简单:

SELECT * FROM (SELECT * FROM mytable ORDER BY col2 DESC) temp GROUP BY col1
Run Code Online (Sandbox Code Playgroud)

在20,000行上运行5毫秒.

mysql group-by having

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

有子句与子查询

我可以用两种方式使用聚合函数编写查询:

select team, count(min) as min_count
from table
group by team
having count(min) > 500
Run Code Online (Sandbox Code Playgroud)

要么

select * 
from (
    select team, count(min) as min_count
    from table
    group by team
) as A
where A.min_count > 500
Run Code Online (Sandbox Code Playgroud)

这两种方法是否有任何性能优势,或者它们在功能上是否相同?

sql subquery having

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

HAVING子句是多余的吗?

以下两个查询产生完全相同的结果:

select country, count(organization) as N
from ismember
group by country
having N > 50;

select * from (
  select country, count(organization) as N
  from ismember
  group by country) x
where N > 50;
Run Code Online (Sandbox Code Playgroud)

每个HAVING子句都可以用子查询和这样的WHERE子句替换吗?或者是否存在一个HAVING条款绝对必要/更强大/更有效/无论什么情况?

mysql sql group-by having having-clause

12
推荐指数
2
解决办法
858
查看次数

Hibernate Criteria API - HAVING子句可以解决

我使用Hibernate Criteria API编写了一个查询来获取特定值的总和,现在我需要能够将结果限制为该总和大于或等于特定值的行.

通常我会在我的SQL中使用HAVING子句来执行此操作,但此时Criteria API似乎不支持这一点.

在原始SQL中,这就是我需要它做的事情:

SELECT user_pk, sum(amount) as amountSum
FROM transaction
GROUP BY user_pk
HAVING amountSum >=50;
Run Code Online (Sandbox Code Playgroud)

我想到的一种解决方法是在FROM子句中使用子查询来获取此求和值,并使用外部查询来使用WHERE子句来限制它.

因此,在原始SQL中它看起来像:

SELECT user_pk, amountSum
FROM (SELECT user_pk, sum(amount) as amountSum
      FROM transaction
      GROUP BY user_pk)
WHERE amountSum > 50;
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我如何使用Criteria API,或者我可以用来解决HAVING问题的任何其他建议/解决方法来编写这个方法的正确方向?

这是我对上面示例的Criteria API代码

DetachedCriteria criteria = DetachedCriteria.forClass(Transaction.class,"transaction");
criteria.setProjection(criteria.setProjection(Projections.projectionList().add(
        Projections.groupProperty("user.userPK").as("user_pk")).add(
            Projections.sum("transaction.amount").as("amountSum")));
Run Code Online (Sandbox Code Playgroud)

谢谢!

hibernate criteria having

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

在UPDATE语句中使用HAVING子句

这个查询

SELECT
FirstName, LastName, NCAAStats.AccountId, College_Translator.school_name, StatTypeId, COUNT(*) AS 'Count'
FROM NCAAstats
INNER JOIN College_Translator
ON College_Translator.AccountID = NCAAstats.AccountId
GROUP BY FirstName, LastName, NCAAStats.AccountId, College_Translator.school_name, CalendarYear, StatTypeId
HAVING COUNT(*) >1
ORDER BY 'Count' DESC
Run Code Online (Sandbox Code Playgroud)

选择我想一个记录集ISValid0.

这些记录是由于输入错误而在我的数据库中出现两次的记录.

我正在寻找类似的东西:

UPDATE NCAAstats
SET IsValid = 0
WHERE (my select statement)
Run Code Online (Sandbox Code Playgroud)

这是在MS SQL SERVER 2008上

谢谢!

sql having sql-server-2008

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

从MySQL中删除COUNT(*)

好的,所以这里已有几个帖子,网上还有更少的帖子.我真的尝试了每一个,无法得到任何工作.希望有人在这里可以怜悯我:)

这是我正在使用的数据.我想删除所有这些记录.

SELECT
part_desc, count(*) as rec_num
FROM ag_master
GROUP BY part_desc HAVING COUNT(*) > 1000;

+--------------------------------------+---------+
| part_desc                            | rec_num |
+--------------------------------------+---------+
| SILICON DELAY LINE, TRUE OUTPUT      |    1092 |
| LOADABLE PLD                         |    1401 |
| 8-BIT, FLASH, 8 MHz, MICROCONTROLLER |    1411 |
| FPGA                                 |    1997 |
| 8-BIT, MROM, 8 MHz, MICROCONTROLLER  |    3425 |
+--------------------------------------+---------+
5 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

我最接近找到可以执行此操作的代码如下所示.语法检查正常并运行,但它似乎只是挂起数据库.我让它运行了长达10分钟,没有任何事情发生,所以我放弃它.

DELETE
FROM ag_master
WHERE part_id IN (
  SELECT part_id
  FROM ag_master …
Run Code Online (Sandbox Code Playgroud)

mysql count having sql-delete

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

使用GROUP BY检索满足条件的记录

我现在只想从几千条记录中选择计数大于1的行(换句话说是重复数据),我主要看到1s,其中有2s和3s在这里和那里

SELECT count( * ) AS `Number` , GI . *
FROM `GeneralInformation` AS GI
GROUP BY `FirstName` , `Surname` 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

mysql group-by aggregate count having

9
推荐指数
2
解决办法
8858
查看次数

MySQL更新子集有

我有三个表:联系人,域和contacts_domains,它们构成了多对多关系.

我想运行一个更新contacts_domains表的查询,但仅适用于只有一个联系人的域.

我知道如何选择我感兴趣的行,但不知道如何更新它们.

SELECT domain_id, contact_id, dominant
FROM contacts_domains
GROUP BY domain_id
HAVING COUNT(contact_id) = 1
Run Code Online (Sandbox Code Playgroud)

我想为所有这些结果设置contacts_domains.dominant = 1.

谢谢!

mysql having

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

是否有可能将Group by,Having和Sum结合起来?

我有一张桌子:

------------------------
|id|p_id|desired|earned|
------------------------
|1 | 1  |  5    |  7   |
|2 | 1  |  15   |  0   |
|3 | 1  |  10   |  0   |
|4 | 2  |  2    |  3   |
|5 | 2  |  2    |  3   |
|6 | 2  |  2    |  3   |
------------------------
Run Code Online (Sandbox Code Playgroud)

我需要进行一些计算,并尝试在一个非常复杂的请求中进行计算,否则我知道如何使用请求数来计算它.我需要结果表如下:

---------------------------------------------------------
|p_id|total_earned|    AVG   |      Count     |  SUM    |
|    |            | (desired)|(if earned != 0)|(desired)|
---------------------------------------------------------
|  1 |      7     |     10   |       1        |    30 …
Run Code Online (Sandbox Code Playgroud)

sql group-by having

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