标签: having

如何在MySQL WHERE子句中使用别名列?

我有这样的MySQL查询:

SELECT *, SUM(...some SQL removed for brevety) AS Occurrences FROM some_table AS q
WHERE criterion="value" GROUP BY q.P_id ORDER BY Occurrences DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我想将结果限制为Occurrences> 0的行.这对我来说似乎很简单,但我似乎无法使其发挥作用.无论我尝试什么,WHERE或HAVING,每当我尝试添加这个限制时,我得到NO ROWS作为回报.我很肯定我的表中有数据应该返回.有谁知道如何完成我正在做的事情?


我试过这个,但它仍然无效.任何想法为什么它仍然无法运作?

SELECT *, SUM(...some SQL removed for brevety) AS Occurrences FROM some_table AS q
WHERE criterion="value" HAVING SUM(...some SQL removed for brevety)>0 GROUP BY q.P_id ORDER BY Occurrences DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

mysql sql where having

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

如何使用HAVING标准计算MySQL条目

所以通常你可以做到

SELECT COUNT(field.id) FROM table WHERE field.id > 100
Run Code Online (Sandbox Code Playgroud)

和COUNT(字段)将返回具有field.id> 100标准的条目数

但是,如果您计算使用HAVING标准指定的条目,例如

SELECT COUNT(field.id), field.id * 10 AS foo FROM table HAVING foo > 100
Run Code Online (Sandbox Code Playgroud)

在这种情况下代码不起作用....

如何计算通过HAVING子句指定其条件的条目?

提前致谢

mysql sql aggregate-functions having

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

需要一些帮助,SQL Server 2000,有和最大(日期)

我需要一点帮助让这个脚本做我想要的.

SELECT KM.initials, 
       TPL.debprice, 
       TMP.pricegroup, 
       TMP.date 
FROM   klientmedarbejder KM 
       INNER JOIN timeprismedarbejderprisgruppe TMP 
               ON KM.employeeno = TMP.employeeno 
       INNER JOIN timeprisprisgruppelinie TPL 
               ON TMP.pricegroup = TPL.pricegroup 
GROUP  BY KM.initials, 
          TMP.date, 
          TPL.debprice, 
          TMP.pricegroup, 
          TPL.date 
HAVING ( Max(TMP.dato) = TPL.date ) 
Run Code Online (Sandbox Code Playgroud)

我需要的是具有最新(最大)日期的debPrice.一名员工经历了他的职业生涯,偶尔他的价格会升级.价格从一组价格中选择.

  1. KlientMedarbejder 是员工表.
  2. TimeprisMedarbejderPrisgruppe 是他的记录升级到新价格的日期列表.
  3. TimeprisPrisgruppeLinie 是您可以拥有的价格列表.

我的解决方案是每位员工最多2个选项.因此:

emp A - 300 - 9 - 1900-01-01  
emp A - 500 - 4 - 2012-01-01  
emp B - 400 - 6 - 1900-01-01  
emp B - 800 - 8 - 2012-04-01  
Run Code Online (Sandbox Code Playgroud)

因此,第一条记录是他加入公司时的默认记录.2012年,他终于有了足够好的价格.现在,我需要在每个员工的升级列表上找到最新日期的答案.因此,emp A应该给我500,而emp …

sql sql-server sql-server-2000 max having

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

SQL HAVING子句没有返回我的期望

我遇到了SQL查询的问题.有问题的查询如下所示:

SELECT TOP 3 r2.fdtmFilingPeriod 
FROM  TBLRETURN r2
WHERE r2.fstrDocType       = 'RT3001' 
AND   r2.FLNGVER           = 0 
AND   r2.fstrStatus        in ('RCVD', 'SUS') 
--AND r2.flngAccountKey    = 669 --has one row in the table     -- should return 0 rows
AND   r2.FLNGACCOUNTKEY    = 265   --has several rows the table -- should return 3 rows
GROUP BY r2.fdtmFilingPeriod
--HAVING COUNT(r2.fdtmFilingPeriod) > 2
ORDER BY    r2.FDTMFILINGPERIOD DESC;
Run Code Online (Sandbox Code Playgroud)

这里奇怪的是,当我取消注释HAVING子句时,我并没有完全得到数据库中的内容.运行上述查询时得到的是:

2013-12-31 00:00:00.000
2013-09-30 00:00:00.000
2013-06-30 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

这显然不止两行,但是当我取消注释HAVING子句时,我没有返回任何行.有人可以帮我弄清楚这里发生了什么吗?

我正在使用SQL Server 2008.

提前致谢.

sql sql-server having sql-server-2008

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

SQL GROUP BY"HAVING"所需的行

是否有一种简洁的方法HAVING来检查所需的行是否在GROUP BY

使用示例日期:

turtle_id   name  
1           Mike
2           Ralph
3           Leo
4           Don
Run Code Online (Sandbox Code Playgroud)

turtle_id   crush_for
1           Pizza
1           April Oneil
2           April Oneil
3           Pizza
3           April Oneil
4           Pizza
4           Pizza
4           Science
4           April Oneil
Run Code Online (Sandbox Code Playgroud)

和SQL:

SELECT turtle.name
FROM turtle
JOIN turtle_crush ON turtle_crush.turtle_id = turtle.turtle_id
WHERE turtle_crush.crush_for IN ('Pizza', 'April Oneil')
GROUP BY turtle.turtle_id
HAVING (a crush on both "Pizza" and "April Oneil")
Run Code Online (Sandbox Code Playgroud)

我意识到我可以做类似的事情HAVING COUNT(*) > 1,但这会给Don(id 4)带来误报,因为他喜欢'Pizza'两次.

编辑: 只要添加一个 …

mysql sql having

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

我应该如何构建查询?

如何找到p_option_id为1和11的产品.

p_id  p_option_id 
100         1  
100         2
100         3
101         1
101         2
101         11
101         12
Run Code Online (Sandbox Code Playgroud)

这应该回来了

p_id
101
Run Code Online (Sandbox Code Playgroud)

mysql sql select group-by having

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

HAVING子句在这里实际发生了什么?

这是SQL Fiddle链接.

根据我的理解,GROUP BY将返回2个元组.

MODEL                        ITEM_TYPE                             PRICE
---------------------------- ------------------------------------- ----------
010-99-0101                  BACKPACK                              5329.1 
626-21-1500                  BACKPACK                              1485.86 
Run Code Online (Sandbox Code Playgroud)

平均价格的价值是,

AVG(PRICE)
----------
4858.014444 
Run Code Online (Sandbox Code Playgroud)

因此,以下查询应筛选出较小的价格值.

SELECT      item_type, MODEL, items.price
FROM        ITEMS
WHERE       MANUFACTURER_NAME = 'UWZ' 
AND         ITEM_TYPE = 'BACKPACK'
GROUP   BY item_type, items.price, MODEL
HAVING      ITEMS.PRICE > AVG(ITEMS.PRICE);
Run Code Online (Sandbox Code Playgroud)

所以,输出应该是:

MODEL                        ITEM_TYPE                             PRICE
---------------------------- ------------------------------------- ----------
010-99-0101                  BACKPACK                              5329.1 
Run Code Online (Sandbox Code Playgroud)

但是,实际上,以下是输出:

产量

no rows selected
Run Code Online (Sandbox Code Playgroud)

sql group-by having oracle11g having-clause

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