在使用group、from以及我试图从数据库中的表中对其进行分组和排序时,sql存在问题,并且已经能够解决这个问题,所以现在我想使用where列等于值。这是我的密码
SELECT g1.adnumber , g1.subject_id , g1.score ,
COUNT(*) AS rank FROM tbl_result AS g1
JOIN tbl_result AS g2
ON (g2.score, g2.adnumber) >= (g1.score, g1.adnumber)
AND g1.subject_id = g2.subject_id
GROUP BY g1.a
假设我们有一个视图/表hotel(hotel_n,hotel_name, room_n, price)。我想找最便宜的房间。我尝试了group by room_n,但我希望在不分组的情况下向董事会显示酒店名称(hotel_name)。
因此,作为一个使用sql(oracle 11g)的业余爱好者,我从
select hotel_n, room_n, min(price)
from hotel
group by room_n;
但是它显示了错误:ORA-00979: not a GROUP BY expression。我知道我必须输入group by room_n, hotel_n,但是我希望h
当我需要知道某些列c包含超过n重复的行数时,我可以这样做:
WITH duplicateRows AS (
SELECT COUNT(1)
FROM [table]
GROUP BY c
HAVING COUNT(1) > n
) SELECT COUNT(1) FROM duplicateRows
这导致了一种不想要的行为: SQL Server计算按i分组的所有行,这(当此表上没有索引时)会导致糟糕的性能。
但是,当更改脚本以使SQL Server不必计算所有行时,并不能解决问题:
WITH duplicateRows AS (
SELECT
我试图从一个表中回显一个圆顶数据,但出于某种原因,它只是重复了两个结果。可能是因为在sub_parent下只有两个可能的数字。我希望它能把所有的6行都重复出来,但只是把它们分组?有什么问题吗?
<?php
require_once 'db/db.php';
$sql = "SELECT *
FROM main_menu_sub
GROUP BY sub_parent
ORDER BY id
";
$result = $con->query($sql);
$con->close();
?>
<?php
if ($resu
我正在执行此查询,并在Responsys中解释计划。
此查询的解释计划工作良好,并返回大约70行计数数据:
select * from ( Select LOCATION, count(LOCATION) COUNT_LOCATION From TABLE Group By LOCATION Order By COUNT_LOCATION Desc )
但是,在末尾添加限制行WHERE ROWNUM <= 10子句:
select * from ( Select LOCATION, count(LOCATION) COUNT_LOCATION From TABLE Group By LO
在为sql查询创建测试DB和表之后,我从教程中看到,下面的内容应该会弹出表,但是当运行时,我会得到一个错误:
SELECT jobtitle, salary, COUNT(*) FROM employees GROUP BY salary;
错误1055 (42000):SELECT list的表达式#1不是按子句分组,而是包含非聚合列'company.employees.name‘,它在功能上不依赖于按子句分组的列;这与sql_mode=only_full_group_by不兼容
当我删除职位时,情况并非如此。
为什么在运行我的查询时,职称不是组的有效表达式?
我有一个包含组by的SQL视图。我试图使用一个类似的方式从视图中进行选择。我选择的列是索引的,但是SQL坚持使用表中的所有行创建临时表,然后对where标准进行筛选。(慢点)如何让它先过滤?
示例
视图定义
SELECT ListCode, SUM(CASE
WHEN ListStatus = 'A' THEN 1
ELSE 0
END) Active
FROM ListParticipation
GROUP BY ListCode
选择
SELECT *
FROM ListParticipationView
WHERE ListCode lik
我在sql server 2008R2数据库中有一个表X,结构如下(有超过500k的记录):
很容易找到每个UserAccountKey的最大mx:
SELECT
UserAccountKey
, MAX(mx) mx2
FROM X
GROUP BY UserAccountKey
但我想修改上面的内容,使其也包含最大值发生时的记录的SessionId和GamingServerId。
这是中的一个工作簿。我想要的结果如下
如果可以避免的话,我宁愿不在mx上使用JOIN;所以我假设循环是唯一的方法?
我有以下代码
SELECT C_Record.BunchOfColumns, Count(*) AS Degrees
FROM C_Record
WHERE (((C_Record.[C#])=[Enter Value])) //Parameter Input from User
GROUP BY C_Record.BunchofColumns;
“我的学位”列从不增加,它总是显示1,无论从查询中返回多少行。我怀疑我没有正确地实现我的GROUP BY方法。如果我正确理解它,所有被选中且不是聚合函数一部分的列(在我的例子中是COUNT)都应该放在GROUP BY中。任何帮助都是非常感谢的。提前
我有想要合并的记录,但它们在不同的列中。我知道group_contat()可以,但我不知道如何插入它。
下面是我的SQL查询:
select * from
info join crew_documents_table on info.id = crew_documents_table.document_crew_id
join crew_rank on info.crew_rank = crew_rank.crew_rank_id where crew_rank in ('1','2','3','4')
and crew_s
假设我有一个表- tasks -包含以下数据:
task user when_added
---------------------------
run 1 2012-08-09
walk 2 2012-08-07
bike 2 2012-08-07
car 1 2012-08-06
run 2 2012-08-06
car 1 2012-08-05
bike 1 2012-08-04
run 1 2012-08
我有一个SQL查询,其中我希望在性别列中得到值为"all“或”女性“的行,在组列中获取值"A”的行。如果有两行,组=A和get = all,而另一组=A和性别=女性,我只想得到有性别= all的行。现在我用:
where group=A and (gender=all or gender=female)
但我有两排
在下面的示例表中,我只想得到行:A all
但是,如果我使用where group=A and (gender=all or gender=female)查询,我将获得组A的两行
群体性别
A all
A female
B
我有以下SQL查询
SELECT * FROM train_stop where code='ABC' OR code='XYZ' OR code='DEF' group by number order by departs
现在,因为我使用的是Group By,所以只取一行特定的数字。但我想对结果进行优先排序。这意味着如果我的表有code=' ABC‘和code='XYZ’,那么结果必须选择ABC行,而不是'XYZ‘,因为ABC在where子句中排在第一位。类似地,如果表具有相同编号的XYZ和DEF,则结果中必须出现XY
我试图简单地根据用户的声誉对他们进行排名,它存储在用户的int表中的MySQL列中。为了找出哪些用户的声誉从最高到最低,我会这样做:
SELECT * FROM users ORDER BY reputation DESC
这会让我的用户以最高的声誉订购到最低。假设用户Tim显示为第三条记录。,我该如何返回他在那个顺序中的#记录,即他的排名?,这看起来很简单,但我对如何做这件事感到茫然。本质上,我希望记录#在命令后说:“他是第三高声誉的用户”。或者,这是一种错误的排名方式吗?
我可以通过列users user_id 在中指定一个用户,如果可能的话,主要希望在一个查询中返回用户的排名。
如果有
我犯了个错误-
列'Employee.EmpID‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
这种情况符合比尔·卡温的回答。
以上更正,符合ExactaBox的答案-
select loc.LocationID, count(emp.EmpID) --
我有一个查询,它可以对一些一般层次化的数据进行一些完全连接。类别有组,组有项,但组和项可以分别独立于类别和组。我想要的结果是这样的:
I. NULL
A. NULL
1. Item Orphan <-- no category or group
B. Group Red <-- no category
1. Item Apple
2. Item Banana
II. Category Bacon
A. Group Blue
B. Group Taupe
1. Item Kiwi
2. Item Watermelon
III.
据推测,我在PHP中有这个sql结果($myresults = mysql_fetch_…)无论是assoc/row/array):
SELECT table1.name as name, sum(table2.numbers) as numbers FROM table2 INNER JOIN
table1 ON table2.fk_id = table1.id GROUP BY name ORDER BY numbers DESC
---------------
| John | 800 |
---------------
| Mark | 500 |
--------------
我将我的Delphi应用程序从MySQL移到server 2012。在MySQL中,我有这样的查询:
SELECT *,(XS+S+M+L+XL+XXL+[1Size]+Custom) as Total FROM StockData
GROUP BY StyleNr,Customer,Color
ORDER BY StyleNr,Customer,Color
而且效果很好。但是在2012中,这个查询显示
Msg 8120,第16级,状态1,第1行
列'StockData.ID‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
如果
我知道很多人都问过这个问题。但我还是搞不懂为什么会发生这种事。无法理解这种逻辑。
我有一个包含id、company_name和employee_name列的表mytesttable。
我正试图获得员工的详细信息,根据公司名称将他们分组。因此,我使用了以下查询:
select *
from mytesttable
group by company_name;
但我得到了以下问题:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Actio
给定一个具有columns(name, lat, lon, population, type)的表,其中每个名称有许多行,我想选择按name分组的行,其中population是最高的。如果我限制自己的名字和人口,下面的方法是有效的
SELECT name, Max(population)
FROM table WHERE name IN ('a', 'b', 'c')
GROUP BY name;
但是我想要其他列-- lat, lon, type --以及结果。如何使用SQLite实现这一目标?
挑战是从表格中选择日最高温度以及每个表的日期和时间信息。
SELECT datestamp, max(temp) hitemp from Weather w group by `year`, `month`, `day`;
这导致
SELECT list的表达式#1不是按子句分组,而是包含非聚合列'Weather.datestamp‘,它在功能上不依赖于GROUP子句中的列;这与sql_mode=only_full_group_by不兼容。
其他类似的问题建议使用JOIN,但我无法理解如何使用JOIN语法,因为高温值并不是唯一的。
我正在努力寻找一种在表的一列中获得连续对的方法,但到目前为止都失败了。为了更具体地解释,让我举一个例子。
假设我有一个包含1列字符(col1)的表(t1),如下所示:
col1
------
a
a
a
c
e
a
g
i
我想得到的是像(a,a) (a,a) (a,c) (c,e) (e,a) (a g) (g,i)这样的连续对。例如,构建一个新表(T2),它的字符串列(Col2)如下:
col2
------
a,a
a,a
a,c
c,e
e,a
a,g
g,i
(如果我可以排除相同值的对(例如(a,a),那就更好了。
请假设没有像lag()这样的分析函数,并且不能使用pl/sql。我必
Iam试图从表、Employee emp_name、emp_location按emp_location分组中选择2个值,iam意识到按函数分组的列需要在select子句中,但我想知道在单个查询中是否有其他方法获得这些值。
我的意图是根据年龄,每个地点只选择一名员工。样本查询
select emp_name,emp_location
from Employee
where emp_age=25
group by emp_location
请在这方面提供帮助。
非常感谢所有回答这个问题的人。我将尝试学习这些窗口功能,因为这些功能非常方便。
我正在尝试从表中选择日期最小的行的估计小时数。
SELECT prev_est_hrs
FROM ( SELECT MIN(change_date), prev_est_hrs
FROM task_history
WHERE task_id = 5
GROUP BY prev_est_hrs
);
然而,这是返回两行,为什么呢?我以为MIN应该只返回最低的?
非常感谢您的帮助。