我试图构建一个SQL查询,其中我按1列分组,但也包括来自每个组中任意记录的其他列的值。所以,就像
SELECT BoxNo
FROM MuffinData
WHERE FrostingTimeApplied >= CONVERT(date, GETDATE())
GROUP BY BoxNo
但是在结果中包括来自MuffinType、FrostingType列的一些值(我知道每个框中只有一个MuffinType和FrostingType值)。
在为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不兼容
当我删除职位时,情况并非如此。
为什么在运行我的查询时,职称不是组的有效表达式?
在发布这个问题之前,我尝试了很多其他的方法。我对表A有一个查询,其中列有: id、num、user_id。id是PK,user_id可以复制。我需要所有行,以便只有唯一的user_id选择具有最高的num值。为此,我在下面提出了aSQL,它将在Oracle数据库中工作。我在rails平台上使用Postgres数据库。
select stats.* from stats as A
where A.num > (
select B.num
from stats as B
where A.user_id == B.user_id
group
我有一个类似这样的查询:
select foo.*, count(bar.id)
from foo inner join bar on foo.id = bar.foo_id
group by foo.id
这在SQLite和MySQL上工作得很好。然而,Postgres抱怨我没有在group by子句中包含foo的所有列。为什么会这样呢?foo.id是独一无二的还不够吗?
我试图将多个MySQL语句优化为一个语句,但遇到了一个问题。
MySQL查询:
SELECT companyid, COUNT(*) AS total
FROM timesheet
WHERE userId='1'
AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77
GROUP BY companyid
HAVING total = 11
我正在尝试做的是选择所有公司,其中恰好有11条记录存在,并且第一条和最后一条记录是在11周内创建的。我得到的错误是“组函数的无效使用”。
这与MIN
我正在更新一个旧网站,其中一个查询不再起作用了:
SELECT * FROM tbl WHERE col1 IS NULL GROUP BY col2 ORDER BY col2
我注意到如果我删除了GROUP BY,它就能工作,但是结果集与原来的不匹配:
SELECT * FROM tbl WHERE col1 IS NULL ORDER BY col2
因此,我试着阅读中的,看看问题所在,它似乎建议不要使用*来选择所有字段,而是显式地使用列名,因此我尝试只使用被排序和分组的列:
SELECT col2 FROM tbl WHERE col1 IS NULL GROUP BY col2 OR
我有一个表格,列如下:
TblID - AUTO_INCREMENT
IndividualID
BranchID
TreeID
只有TblID是唯一的。我希望查询TreeID =x和BranchID = y的表,以检索共享这些特征的所有单独记录。一个IndividualID可能有许多单独的记录,但我只想检索每个IndividualID创建的第一个记录(因此TblID值最低)。
所以我改变了:
SELECT * FROM tbl WHERE TreeID = :TreeID AND BranchID= :BranchID
至
SELECT * FROM `rep_options` WHERE T
我在创建SQL查询时遇到了一些困难。我希望使用所有列和行查询表中的记录。
我使用下面的select查询。它实际上反映了我想要的记录,但唯一的问题是它只显示了19列中的3列。它只显示Barangay、Wentoff和Restored的列。我想要的是显示相应结果的所有19列。
这是我的SQL代码:
SELECT Barangay, MIN(wentoff) as Wentoff,
CASE WHEN MAX(CASE WHEN Restored IS NULL THEN 1 ELSE 0 END) = 0 THEN MAX(Restored) End
FROM ReportforValidat
我正在努力理解,窗口函数是如何内部工作的。
ID,Amt
A,1
B,2
C,3
D,4
E,5
如果我运行这个,就会给出total列中每条记录中所有金额的总和。
Select ID, SUM (AMT) OVER () total from table
但是当我运行这个,它会给我累积的总和。
Select ID, SUM (AMT) OVER (order by ID) total from table
试图了解当它的OVER()和OVER(order by ID)
我所理解的是,当没有在OVER中定义分区时,它将一切都视为单个分区。但是无法理解当我们在order by Id中添加over
就我所理解的MAX函数而言,它将从给定的列返回最大值。如果是数值,例如工资列,这对我来说很明显--这是我在教程中找到的唯一应用程序。但是,我有一个问题要理解,在非数字列的情况下,它是如何工作的。
我的问题来自于这个练习(关于SQLex.ru)
找出只生产同一型号型号的制造商,这些型号的数量超过1。“产品”表包括制造商的信息、型号和类型(“PC”、“膝上型电脑”或“打印机”)。解决办法之一是:
SELECT maker,
MAX(type) AS type
FROM product
GROUP BY maker
HAVING COUNT(DISTINCT type) = 1
此查询工作:
select p.Nombre as Nombre, c.Nombre as Categoria, s.Nombre as Subcategoria FROM Producto as p
inner join Subcategoria as s ON p.IDSubcategoria = s.ID
inner join Categoria as c on s.IDCategoria = c.ID
group by p.Nombre, c.Nombre, s.Nombre
order by p.Nombre
但是,当我通过语句删除组上的s.Nombre时,我会得到以下错误:
Ms
我有一张桌子,我需要按以下方式排序:
需要按工资对部门进行排名;
需要显示是否薪水= NULL -“不显示数据”消息
需要将支付给部门的工资总额相加
需要清点部门的人员
SELECT RANK() OVER (
ORDER BY Salary DESC
)
,CASE
WHEN Salary IS NULL
THEN 'NO DATA TO BE SHOWN'
请考虑以下问题:
SELECT artist.id, COUNT(DISTINCT artist$styles.v_id)
FROM artist
LEFT JOIN artist$styles ON artist$styles.p_id = artist.id
我得到的结果是:
id count
1 4
问题如下:
当artist表中有4行且没有应用于查询的WHERE、HAVING、LIMIT或GROUP BY子句时,为什么只从它中选择一行?
在artist$styles中只有三条记录具有p_id of value 1,为什么要计算4
为什么如果我在其中添加一个GROUP
当我读到这篇文章时:
以下解决方案对我来说没有意义,我想知道它如何才能起作用:
SELECT id, min(record_date), other_cols
FROM mytable
GROUP BY id
这在我的数据库上不起作用,在我看来,它似乎不合逻辑(尽管它在SQL示例中确实有效)。我的DBMS抱怨
列必须是组列: other_cols
我正在使用MaxDB --这是DBMS特有的问题吗?
我知道很多人都问过这个问题。但我还是搞不懂为什么会发生这种事。无法理解这种逻辑。
我有一个包含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
简而言之,我试图按日期排序数据集,然后按另一列进行分组,从而选择每个列的最新行。
查询:
SELECT name, datetime
FROM (
SELECT *
FROM `requests`
ORDER BY datetime
) a
GROUP BY a.name;
错误:
#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.datetime' which is not functionally de
我对以下查询有问题:
SELECT
ee.id
ee.column2
ee.column3,
ee.column4,
SUM(ee.column5)
FROM
table1 ee
LEFT JOIN table2 epc ON ee.id = epc.id
WHERE
ee.id (6050)
GROUP BY ee.id
其中列id是主键。在版本8.4中,查询返回一个错误,即column2、column3和co
我在编写一个查询时遇到了问题,这个查询在找到另一列的最小值后给出了其他字段。我试过了:
Select WorkOrder, min(Job), Details
From Jobs
Group by WorkOrder
但它不起作用。
这为我提供了一个按WorkOrder列出的最低工单编号列表:
Select WorkOrder, min(Job)
From Jobs
Group by WorkOrder
我想要具有最低工单编号的行项目的详细信息。我做错了什么?
我有一张表,它的数据就像
userID name amount Date
1 mark 20 22-10
1 mark 30 22-10
2 kane 50 22-12
2 kane 60 22-12
3 mike 60 22-10
使用userID +用户名+日期的组合,日期是唯一的
但是由于它有超过100 k的记录,可能会重复日期
我知道这是一个非常简单的问题,但我需要有人来解释这个查询背后的思想过程。我有一张有关国家的大表。我想看看哪个国家的人口最少,所以我使用下面的查询
SELECT country, MIN(population) AS min_pop FROM countries_by_population;
它返回一个错误,即国家应该在集合中,或者在组中。我很困惑,为什么?这个查询不应该只查看min(人口)并以国家名称返回吗?
在此之后,我通过这样的方式将国家添加到一个组中
SELECT country, MIN(population) AS min_pop FROM countries_by_populati
所以我刚刚更新了最新的MySQL,我得到了这个错误:
SELECT list的表达式#1不是按子句分组,而是包含非聚合列'stats.playtime.date‘,它在功能上不依赖于GROUP子句中的列;这与sql_mode=only_full_group_by不兼容。
我的桌子:
id int(255)
date datetime
我的问题是:
SELECT DATE(date) + INTERVAL 1 DAY, COUNT(DISTINCT id)
FROM playtime
GROUP BY DATE(date)
它所做的就是告诉我有多少用户在特定的日期第一
将rfid考勤数据放在google工作表中,其中有一个员工每天工作多少小时的进出time.Need。使用了查询语句,并且能够在需要时为给定的day.Struck提取min和max,以找到工期HH:MM已工作。
附带google表,请查看G1中的查询代码,需要在K列中找到持续时间
QUERY(A:D,"Select A,B, Max(C), Min (C),Max(C)- Min (C) Group by A,B Label A 'Key',B 'Date',Max(C) 'Maximum', Min (C) 'Minimum
我有一个名为“apple”的表,我编写了以下查询:
select name,
count(name),
case when istasty is null then false else istasty end
from apple
group by name, istasty;
这是输出:
我试图使用以下条件对name和istasty标志进行分组:
当对应的name列具有true或false时,则返回false。在上面的图像中,tala有true和false istasty列。但是,我想返回false,因为它至少有一个false istas
我得到了错误:
Column 'dbo.Saved_ORDER_IMPORT.Company' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
当我执行时:
SELECT [Order No], Company
FROM [dbo].[Saved_ORDER_IMPORT]
where [sent] = 1 and datesent between '01/01/2009' and
我的任务是:选择部门id,根据第一个被录用的人的月份和时间选择最长的工作时间。
我写的东西是这样的:
SELECT department_id, min(hire_date) as earliest_hire_date, sysdate-hire_date dni
FROM employees
它会生成以下错误:
*ORA-00937: not a single-group group function
00937. 00000 - "not a single-group group function"*
我用的是oracle。你知道怎么修复它吗?
在升级到MySQL 8.0之前,我以前使用GROUP BY不选择重复项,但现在我得到了:
1055 - SELECT list的表达式#2不是按子句分组,而是包含非聚合列'database.orders.ID‘,它在功能上不依赖于按子句分组的列;这与sql_mode=only_full_group_by不兼容,时间:0.02800s
我知道我可以按以下方式更改mysql模式:
mysql -u root -p
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY'
这是我的问题。
我在SQL查询方面不是很好,所以我希望能深入了解LIMIT子句的不同行为。我有两个问题。假设我的表有3列,name、date和date_modified。我每小时修改一次表,并使用date_modified列对其进行修改。我正在尝试获取为特定日期2017-12-12修改的日期的最后一条记录(最近一次修改)。
SELECT * from
(SELECT * from table where name in ('name1','name2','name3')
and date in ('2017-12-12&
为什么要查询:
SELECT id, MAX(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
和
SELECT id, MIN(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
具有相同的id结果。
我希望为每个用户选择具有最大或最小时间的行。
我有两张桌子:Group和Schedule。Group表由列组成: Group_Name、No_of_member。Schedule表由列Group_Name、Schedule_Date组成。一个团体可以有很多日程安排。
我正在尝试创建一个触发器,当某个特定记录从Schedule表中删除时,该触发器将从Group表中删除所有相应的记录。我写了一个触发器:
CREATE OR REPLACE TRIGGER group_test
AFTER DELETE ON Group
FOR EACH ROW
BEGIN
DELETE FROM Schedule WHERE Schedule.group
需要学习如何与UCanAccess一起工作,在这里我可以通过这些选择使用一个组。
String sql = "SELECT Route_To, BatchNo, BatchScOpr, BatchTrack, Time_Stamp,
sum(fix_bat_sum.STOTS + fix_bat_sum.STOTR) AS Sum
FROM fix_bat_sum GROUP BY fix_bat_sum.BatchNo";
我在一个MySQL DB中使用了它,它工作得很好,但是当我尝试使用.mdb时,UCanAccess会抛出空指针,如下所示
java.sql.SQL