标签: having-clause

ORDER BY与HAVING子句一起使用时出错

我试图使用一些基本的SQL函数.我需要获得一些数据的平均值并按降序排序.我得到的错误是"不允许组功能"

表:

STUDENTS
-----------
ID
CLASS
GRADE
ROOM
Run Code Online (Sandbox Code Playgroud)

SQL:

    SELECT ID, class, AVG(Grade) AS AvgGrade
      FROM Students
     GROUP BY AVG(Grade)
    HAVING AVG(Grade) >= 3.0
     ORDER BY AVG(Grade) DESC
Run Code Online (Sandbox Code Playgroud)

我被告知ORDER BY不能与HAVING子句一起使用,我需要重复该功能.有帮助吗?

sql sql-order-by having-clause

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

mySQL 在新创建的列上使用 where

所以,我认为这相当简单,但我搞砸了一些事情。

我有疑问

SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type
Run Code Online (Sandbox Code Playgroud)

产生这个:

Price | food_type |
2.25 | Drink     |
1.50 | Candy     |
3    | Soup      |
Run Code Online (Sandbox Code Playgroud)

我正在尝试退回所有超过 2 美元的价格

所以我想要:

Price | food_type |
2.25 | Drink     |
3    | Soup      |
Run Code Online (Sandbox Code Playgroud)

看起来应该很简单

SELECT AVG(price), food_type
FROM instructor
WHERE AVG(price) > 2
GROUP BY food_type
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用。

我究竟做错了什么?

mysql sql average where-clause having-clause

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

SQL group by只返回第一行

我有一个包含两列'id'和'layout plan'的表

我需要查看具有相同布局规划的所有行

我用这个查询.

select * 
from project_layout 
group by layout_plan 
having count(layout_plan) > 1
Run Code Online (Sandbox Code Playgroud)

但是这个查询只返回第一行.

我想看到所有具有相同布局规划的组.

sql group-by having-clause

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

我们可以使用不同的过滤条件在同一个表字段或列上多次使用相同的聚合函数吗?

我想在具有不同过滤器的同一字段上的查询中的'Amount'字段上使用SUM()函数4次. 就像是



SELECT Date1,CC,BU, SUM(Amount),SUM(Amount),SUM(Amount),SUM(Amount)
FROM MainTable<br>
GROUP BY CC,BU,Date1
Run Code Online (Sandbox Code Playgroud)

这里

第一个SUM(Amount)应该被计算时,Mode='011'Mode='012'从MainTable
第二次SUM(Amount)时,应计算Mode like '03_'Mode Like '05_'从MainTable
3 SUM(Amount)时,应计算Mode like '10_'从MainTable
4日SUM(Amount)应计算时(Mode !='011'),并(Mode !='012') (Mode not Like '03_')(Mode not Like '05_')来自MainTable

如何实现这一目标?我在很多方面尝试过,但无法按照我想要的方式得到结果.
请帮我.
先感谢您.

sql group-by aggregate-functions sql-server-2008 having-clause

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

分组依据与具有子句中的日期列

customer    price   date
123         100     1-Jan-15
321         200     2-Jan-15
123         10      3-Jan-15
123         50      4-Jan-15
321         150     5-Jan-15
123         100     6-Jan-15
123         300     7-Jan-15
321         500     8-Jan-15
123         700     9-Jan-15
Run Code Online (Sandbox Code Playgroud)

我想按客户查看 1 月 3 日和 1 月 7 日日期之间的 SUM(Price)

就像是:

select customer,sum(price) from table group by customer 
having date between 3-Jan-2015 and 8-Jan-2015 
Run Code Online (Sandbox Code Playgroud)

这提示我dateselectorgroup by子句中有一个。当我包含它时,它也按日期分组。

期望的输出是:

123 460
Run Code Online (Sandbox Code Playgroud)

sql group-by having-clause

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

在having子句中对多个组求和

我有以下查询按保险类型显示计数.这是查询:

;WITH CTE
AS
(
SELECT DISTINCT ROW_NUMBER() OVER (Partition by PatInfo.PatientProfileID Order By E.Visit desc) AS RowNumber, 
        PatInfo.PatientProfileID, E.Visit, PatInfo.Zip, E.CarrierTypeDesc, E.FinancialClassDescription, IG.UDSInsuranceGroupName,IG.UDSInsuranceID
FROM Encounter E JOIN CHCEncounterType ET ON E.CHCEncounterTypeID = ET.CHCEncounterTypeID       
        JOIN PatientInfo PatInfo ON PatInfo.PatientProfileID = E.PatientProfileID
        LEFT JOIN dbo.UDSInsuranceMapping ON ISNULL(dbo.UDSInsuranceMapping.InsuranceName,'') = ISNULL(E.FinancialClassDescription,'') 
        LEFT JOIN dbo.UDSInsuranceGroups IG ON IG.UDSInsuranceID = dbo.UDSInsuranceMapping.UDSInsuranceID            
WHERE E.EncounterCounted = 1 
) 

SELECT Zip AS ZipCode, 
    Count(PatientProfileID) as Total, UDSInsuranceGroupName, UDSInsuranceID
from CTE 
where RowNumber = 1 AND ZIP IS NOT …
Run Code Online (Sandbox Code Playgroud)

sql-server having-clause

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

在 WHERE 和 HAVING 语句中使用别名?

例子:

SELECT customer_id, address_id as addressID 
FROM customer 
WHERE addressID = 5 
Run Code Online (Sandbox Code Playgroud)

但是,使用 HAVING 子句效果非常好。那么为什么别名在 where 子句中不起作用呢?

mysql sql where-clause having-clause

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

CREATE UNIQUE INDEX 语句因发现重复键而终止

这是用于销​​售火车票的未完成的数据库。 在此处输入图片说明 我想在路由表中为 RouteId 创建主键,但出现异常:

CREATE UNIQUE INDEX 语句终止,因为找到了对象名称“dbo.Route”和索引名称“PK_Route”的重复键。重复的键值为 (1)。

但是没有另一个键。

我认为问题可能是最初我有 2 个表 Route 和 RouteStation,然后我删除了表 Route 并将 RouteStation 重命名为 Route。

本网站上的另一个主题对我没有帮助。我还尝试查看此表的键,但输出为空:

SELECT Col.Column_Name from 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab, 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col 
WHERE 
    Col.Constraint_Name = Tab.Constraint_Name
    AND Col.Table_Name = Tab.Table_Name
    AND Constraint_Type = 'PRIMARY KEY'
    AND Col.Table_Name = 'Route'
Run Code Online (Sandbox Code Playgroud)

sql sql-server database-design duplicates having-clause

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

如何使用having子句编写此SQL查询?

我的数据库架构如下所示

table - X有以下3列docid(文档ID),术语(文档中的术语),count(特定docid术语的出现次数)

docid
terms
count
Run Code Online (Sandbox Code Playgroud)

如何提取以下信息.总词数总和超过300的docid数,包括重复词.

sql having-clause

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

Oracle 中的 SQL 查询中带有 HAVING 子句的 1 和 2 是什么意思?

我在 Oracle DBMS 中创建了一个具有以下属性的员工表:部门号和薪水。我执行了这个查询:

SELECT deptno, SUM(salary)

FROM emp
GROUP BY deptno
HAVING 1 > 2 ;
Run Code Online (Sandbox Code Playgroud)

我认为 1 和 2 指的是 SELECT 语句中的“deptno”和“SUM(salary)”列。所以我在表中的“deptno”>“SUM(salary)”处放置了一条记录,如下所示:

deptno          salary
1001            5000
1002            1000
Run Code Online (Sandbox Code Playgroud)

输出是“未找到行”我期望第二行作为输出。请解释原因。

sql oracle group-by having-clause

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

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
查看次数