我正在尝试解决知名(我相信)网站www.sql-ex.ru上的第14个问题,因为我需要学习sql(我对这门语言非常陌生)这是在stackoverflow 上回答的相同问题我的第一个方法是这样的:
select maker, type
from product
group by maker, type
having count(type)=1 and count(model)>1
显然这是错误的,但我不明白为什么,我一直在四处寻找,我在谷歌上找到了这个:
select maker, MAX(type)
from product
group by maker, type
having cou
今天,我遇到了一个很常见的问题,就是从由group by分割的数据集的每个组中选择最小值的行。我找到了一个SQLite特有的解决方案(它在MySQL中工作不正确,在PostgreSQL中抛出一个错误),并且不使用任何联接。看起来是这样的:
SELECT *, min(x) FROM table GROUP BY y
是一个例子的花招。
但是,我不明白为什么会这样--仅仅通过包含一个聚合函数,每个组就会被隐式排序,并返回聚合函数的结果对应的行。默认SQL行为是选择任意行。我翻阅了,却没有找到任何解释。这就是我想要解释的原因。
编辑:到目前为止,两个答案都猜测这是一个巧合。事实并非如此。在实际的
好吧,自从我非常密集地使用SQL Server编写查询以来,已经有一段时间了。
一定有我错过的地方。
根据我的理解,以下两个查询应该返回相同数量的重复记录
SELECT COUNT(INVNO)
, INVNO
FROM INVOICE
GROUP BY INVNO
HAVING COUNT(INVNO) > 1
ORDER BY INVNO
SELECT DISTINCT invno
FROM INVOICE
ORDER BY INVNO
INVNO中没有空值。
我哪里可能出错?
我下面有一张桌子:
当我运行这个查询时:
Select Gender, City, SUM(Salary) as TotalSalary, COUNT(ID) as [Total Employees]
from tblEmployee
Group by Gender, City
输出表是:
我对如何从查询中对员工总数进行排序感到困惑。我在查询中有Count(ID) as [Total Employees],但是SQL代码中的Group子句是如何划分总员工的?由于我认为Count(ID) as [Total Employees]将返回10,因为我在我的表中有10条记录,但我
我有一个这样的查询:
select a, b, c, group_concat(d separator ', ')
from t
group by a;
这看起来挺好的。据我所知(请原谅我,我是一个MySQL新手!),它返回的行:
每个唯一的a值
对于每个a值,一个b和c值
对于每个a值,所有d值都连接成一个字符串。
这是我想要的,但我也想检查对于每个a,对于所有具有a值的行,b和c都是相同的。
我的第一个想法是比较:
select count(*) from t group by a, b, c;
通过以下方式:
select count(*) from
我试图从一个表中回显一个圆顶数据,但出于某种原因,它只是重复了两个结果。可能是因为在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
我有一个疑问:
SELECT * FROM wp_silumos_suvartojimas
WHERE katiline_name = 'Dukstynos mikrorajonas'
GROUP BY kainam2
ORDER BY kainam2 ASC
LIMIT 10
结果分组:
未分组的结果:
更新:
按特定字段(kainam2)将我的结果集分组,如果来自组内的记录具有特定的adresas值,则返回该组的记录;如果组内没有记录具有指定的adresas值,则返回组的随机记录;
如您所见,ID为22和164的行具有相同的kainam2值。但是
我正在使用PostgreSQL。我已经找到了我需要使用下面的查询更新的2行。每个人都有薪水。我需要把他们的工资更新到1000英镑。如何使用UPDATE语句更新表中的特定记录?
SELECT fname,
lname,
telno,
Count (ownwerno) AS ownerNumberCount
FROM privateowner priv,
propertyforrent prop
WHERE priv.ownerno = prop.ownwerno
GROUP BY priv.fname,
我遇到了以下SYBASE SQL:
-- Setup first
create table #t (id int, ts int)
go
insert into #t values (1, 2)
insert into #t values (1, 10)
insert into #t values (1, 20)
insert into #t values (1, 30)
insert into #t values (2, 5)
insert into #t values (2, 13)
insert into #t values (2, 25)
go
declare @time in
我有以下代码
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中。任何帮助都是非常感谢的。提前
我想对从SQL 2012数据库返回的一些数据进行分组,我需要研究如何根据一定数量的字段进行分组。
下面的SQL运行良好
SELECT MessageId, SearchedString, COUNT(SearchedString) AS [SearchedStringCount], MAX(percentage) AS TopPercent
from (
select MessageId, SearchedString, Percentage
from table
where MessageId = '15'
) T
GROUP BY MessageId, SearchedS
假设我们想要找到一个特定名字的人的最大或最小年龄。
我们可以:
select name, min(age) from users group by name;
select name, max(age) from users group by name;
min和max与其他聚合函数都有明确的文档说明。
实现上述目标的另一种方法如下:
select name, age from (select name, age from users order by age asc) sorted group by name;
select name, age from (select name, age
我有一个包含两个列的链接表,用户组(用户int,组int)包含大约100亿行。每一列都有一亿个独特的值。在这两个字段上都创建索引。我必须找到用户数最多的组,它们属于指定的组。
我的疑问是
select group_id, count(*) as cnt
from usergroups GM
join (select user_id from usergroups where group_id=74437 LIMIT 100) G
on (GM.user_id=G.user_id)
group by group_id
having cnt > 10
o
我是Linq新手。我正在尝试转换这个简单的SQL查询,但是找不到任何关于如何将SQL转换为LINQ的有用资源。我的SQL查询是:
SELECT SomeValue
FROM SomeTable
GROUP BY SomeValue
HAVING SUM (OtherValue) > 0;
我对LINQ的理解还不够好,无法做到这一点。我在分组工作时遇到了很多麻烦,我甚至还没有尝试过计算求和。
我试过一些方法。这是最新的,尽管它仍然非常错误:
from entry in SomeTable
group entry by entry.SomeValue into grp
select grp.
我认为这是一个非常简单的查询,但由于某些原因,它在Postgres中不起作用(它在其他dbs中也能使用)
这就是db模式怪人喜欢的方式:
tableA(
id integer,
...
)
tableB(
id integer
tableA_id integer -- foreign key to tableA
...
)
我想为tableB选择记录,加入tableA,然后按tableA_id分组:
SELECT * from tableB b INNER JOIN tableA ON b.tableA_id = tableA.id
GROUP BY table
我的报告中的每条记录都包含一组格式为"ItemName X Y Z“的其他数据项,其中X、Y和Z是数值。
当显示时,该集合将根据每个项的属性分组(如下图所示),并显示在表中或类似的表中。
值X、Y和Z将以图片形式显示,格式将应用于其他项目(即适用于不同组名的背景色),以使信息更易于阅读。
在报告中显示这一点的最佳方式是什么?当前选项似乎正在使用Sub报表或使用CustomReportItems构建一个新控件。
级别1组1名级2组1.1名ItemName X Y ZItemName X Y ZItemName X Y
- Level 2 Group 1.2 Name
- I
我试图找出最有效的方法来检索每一组的最新记录。
我设法生成了两个不同的查询。但细节略有不同。
这些是gcm_notification记录。还有更多的记录。但现在我只想专注于一张唱片。从图像中,我们可以看到latest id = 1393和flag = 1
SELECT id, post_id, registration_id, flag
FROM gcm_notification
WHERE post_id = 1743
AND registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNI
我有一个查询,没有正确地分组并返回错误的结果,我也不知道问题出在哪里。
查询如下所示。FYI -在当前的表单中并不明显,所以我需要这个组,因为我已经删除了查询的所有其他部分,以到达我看到问题的最基本的表单。
SELECT * FROM (
SELECT *
FROM notifications n
WHERE 1
-- and group_id = '5b35c8eb075881f8bbdfbcb36b052aa7'
GROUP BY `from`
) t
WHERE group_id = '5b35c8eb075881f8bbdfbcb36b0
我有一个MySQL (更准确地说,是MariaDB)数据库,它包含不同的“记录”(不要与数据库记录混淆,这是我的系统使用的数据单元,由多个键值字段组成)。每个“记录”都是“实例”的一部分。每个“实例”都是“用户组”的一部分,每个“记录”都可以是“类别”的一部分。
我试图编写一个SQL查询,该查询检索用户组的所有类别,并检索每个类别下所有实例中存在的记录数量。我的SQL语句如下所示:
SELECT COUNT( r.id ) AS records_number, c.category
FROM records r
INNER JOIN feeds_instances i ON r.instanc
我有这三个问题,我需要合并成一个。
$sql = "SELECT SUM(datamb) AS value_sum FROM maindata GROUP BY phonenumber";
$sql1 = "select dataplan as currentplan from maindata GROUP BY phonenumber";
$sql2 = "SELECT DISTINCT phonenumber AS value_sum1 FROM maindata";
所以我可以用如下三列显示它们:
while ($row = m
我正在使用SQL2008并尝试分批处理表中的数据,但是有一个问题。数据被分成组,在我进行处理时,我必须确保一个组总是包含在一个批中,换句话说,这个组永远不会被分到不同的批中。假设批大小总是比组大小大得多。下面是演示我的意思的设置(代码使用Jeff Moden的数据生成逻辑:)
DECLARE @NumberOfRows INT = 1000,
@StartValue INT = 1,
@EndValue INT = 500,
@Range INT
SET @Range = @EndValue - @StartValue + 1
IF OBJ
是否可以在Oracle SQL中使用LISTAGG或类似的分析函数来显示组中直到当前记录的所有值? 这是我的表格: id group_id value
-- -------- -----
1 1 A
2 1 B
3 1 C
4 2 X
5 2 Y
6 2 Z 我希望得到以下结果: id group_id values
-- -------- ------
1
我正在开发SSRS报表生成器,它使用一个调用SQL Server2000数据库的数据集。
该查询将获取几个不同字段的总和,并提取与该客户编号有关的所有记录。我想要得到和的总和,但由于细节行的原因,它已经结束了。基本上,我想要的是不同sum列值的总和。
=Sum(Fields!tot.Value, "table1_Group3")
我看到您可以通过组来获得总和,我尝试了上面的表达式,但返回了一个错误:
The Value expression for the textbox 'tot' has a scope parameter that is not
我正在使用SQL Server。我有一个表,其中包含大约75000条记录。其中有几条重复的记录。所以我写了一个查询,想知道哪条记录重复了多少次,
SELECT [RETAILERNAME],COUNT([RETAILERNAME]) as Repeated FROM [Stores] GROUP BY [RETAILERNAME]
它给我的结果是,
---------------------------
RETAILERNAME | Repeated
---------------------------
X | 4
---------------------
下面的语句检索Server中每个组中的前2条记录。但是,正如您所看到的,它的工作原理是正确的,但它根本不缩放。我的意思是,如果我想检索前5或10条记录,而不是仅仅2条,您可以看到这个查询语句是如何快速增长的。
如何将此查询转换为返回相同记录的内容,但我可以将其快速更改为返回每个组中的前5或10条记录,而不是仅返回2条记录?(也就是说,我只想告诉它返回每个组中的前5位,而不是按照下面的格式有5个工会)。
谢谢!
WITH tSub
as (SELECT CustomerID,
TransactionTypeID,
M
我有下面的表格
Date, TelephoneNumber, Type
02/02/12, 123456, b
04/02/12, 123456, b
07/02/12, 123456, a
03/02/12, 789999, a
15/02/12, 789999, b
运行以下SQL时
select TelephoneNumber, max(Date) as datetime, Type
from Table1
where Date > '2012-03-25 00:00'
grou
如果我有这样的SQL查询:
SELECT playerno,town
FROM players
GROUP BY town
在这种情况下,服务器将返回一个城镇,对于playerno,它将返回一个值,即使数据库中有多个值。
我的问题是,哪种价值会被选择?这个选择是随机做出的,还是会得到第一个结果,还是会发生其他事情?谢谢。
此SQL语句
"select firstname,lastname from users where lastname in('foo','bar') group by firstname"
它意味着选择表"users“中的所有记录,其中lastname匹配"foo”或"bar“中的任何一个。
我不希望这种行为
我要检索的是"users“表中姓氏匹配"foo”和"bar“的所有记录。
那么,有什么办法可以做到这一点吗?
我知道我应该用什么东西代替(‘foo’,'bar'),但我不知道