示例:
SELECT COUNT(id) AS total_orders,
( ( SELECT COUNT(id) FROM orders WHERE status = 'Closed' ) / total_orders * 100) AS percent_closed_orders
FROM orders
问:如何在子查询中使用total_orders?我在“字段列表”中得到一个错误“未知列'total_orders‘”。
我使用Sybase ASE 12.5.0.3,无法执行以下子查询:
select * from (select '1' union select '2' ) X
我一直在环顾四周,据我所知,在Sybase ASE 12之后,我是否做错了什么,还是这个版本不可能?
编辑-即使在将查询更改为:
select * from (select '1' as col1 union select '2' as col1 ) X
所以即使给列取化名,它也失败了.
每次创建新列并希望在WHERE语句中使用该列时,是否需要对其进行子查询?
例如。我想创建一个名为“滞后”的新列,该列使用login_date列,并将其延迟4天。是否有一种方法可以立即按该列筛选表,还是总是需要创建一个子查询来使用新列“滞后”的位置。
这将是理想的:
SELECT id,
login_date,
LAG(login_date, 4) OVER (PARTITION BY id ORDER BY login_date) as Lag
FROM table
WHERE DATEDIFF(Lag, login_date) = 4
这就是我试图避免的方式:
SELECT sub.*
FR
实际上,我试图重写一个查询,以便使用名为“sakila”的数据库将SUM( named )计算为子查询:
SELECT first_name, last_name, SUM(amount) AS totalSpent
FROM sakila.customer c JOIN
sakila.payment p
ON c.customer_id = p.customer_id
GROUP BY last_name, first_name;
我拥有的是:
SELECT first_name, last_name, SUM(amount) AS totalSpent FROM sak
我使用sql查询查看表中的数据:
SELECT created, name, surname, phone, email, address
FROM jos_registration_form
ORDER BY created DESC
这将返回表前面的列表,其中包含创建的第一列名称、第二列名称、第三列名称,等等。
是否有一条sql语句可以只在前面将列名更改为其他(而不是mysql数据库中的)?
例如,在前面查看创建的第一个列名,希腊语Δημιουργία,第二个列名,希腊语Όνομα等等。
我知道这可以用php等来完成,但是我想用sql来完成。
我今天遇到了一个奇怪的查询,我认为它会失败,但它以一种意想不到的方式成功了。这是它的最小复制。
表和数据:
CREATE TABLE Employee(ID int, Name varchar(max))
CREATE TABLE Engineer(ID int, Title varchar(max))
GO
INSERT INTO Employee(ID, Name) VALUES (1, 'Bobby')
INSERT INTO Employee(ID, Name) VALUES (2, 'Sue')
INSERT INTO Engineer(ID, Ti
我已经找到了旧的帖子,但我很好奇是否有更好的解决方案,我的情况。
我有工作代码,但它真的很慢。我试图在子查询中返回两个列,但是我有一个错误(子查询必须只返回一个列)。
示例:我是JOINing,有很多表,我需要返回两列。让我们调用表契约,我需要列、点和points_before。
SELECT
random things to return as default from JOINs and table workers
(SELECT SUM(s.points)
FROM contracts s
我有以下查询:
SELECT
[Id], [Number] AS [Purchase Order], [OldProduct] AS [Old Product],
(SELECT [Id]
FROM
(SELECT [Id], [Name]
FROM [Products]
UNION ALL
SELECT [ProductId] AS [Id], [Alias] AS [Name]
FROM [ProductAliases]) AS [ProductNames]
我的查询中出现了这个错误,您知道如何将sdate放在2层子查询中吗?
select
at.startDate as sdate, at.dau as DAU,
(
select count(distinct d.uid) from
(select ses.uid from dsession as ses where ses.startDate = sdate group by ses.uid
union all
select res.uid from rsession as res where res.startDate = sdate group by res.uid) as te
有人能帮我优化这个查询吗?
SELECT(X1,
X2
FROM TABLEAA
WHERE
Y IN (SELECT Y FROM TABLEBB WHERE Z=SELECTED)
AND Y IN (SELECT Y FROM TABLECC WHERE ZZ=SELECTED)
)
WHERE AS
TABLEAA : 1 million enteries
TABLEBB : 22 million enteries
TABLECC : 1.2 million enteries
它可
我非常接近于完成这个困难的查询。它相当长,所以希望不要太过压倒一切。但在select块中的case语句中,我引用的是where语句中的union。它给出了"MySQL数据库错误:未知的列'U.EmpID‘in 'where子句’“。任何帮助都将不胜感激。下面是查询:
SELECT U.EmpID,
CASE
WHEN ((SELECT COUNT(*)
FROM (SELECT *
FROM timeclock_copy tp
有人能帮助我让这个查询正常工作吗?或者有一个替代方法来做同样的事情吗?每个表都有一个名为' field‘的主键字段,其他每个字段都是不同的,但是我想连接这些字段,并返回每个表'value’行中所有列的返回,其中field = 'value‘。
查询:
SELECT A.*, B.*, C.*
FROM
(
(SELECT * FROM Table1 WHERE Field = 'value') A
FULL OUTER JOIN
(SELECT * FROM Table2 WHERE Field = 'value') B on
我使用这个查询返回浮动字段在其平均值周围的分布:
SELECT COUNT(*) AS [Count], Result FROM (
SELECT ROUND(Result - AVG(Result) OVER(), 1) Result FROM Results)
GROUP BY Result
此查询返回所有记录与平均值之间的距离。现在,我需要过滤记录,它超出了±3SD的范围。我想,也许我可以通过将我的查询更改为:
SELECT COUNT(*) AS [Count], Result FROM (
SELECT ROUND(Result - AVG(Result)
我想从一个包含相同字段的两个表的联合查询中创建2列数据。我有两个表,每个表中都有“使用”字段。
我尝试了下面的查询,但得到了一个错误。
select Utilizations as "Utilizations A", Utilizations as "Utilizations B" from (select Utilizations as A, 0 as B from TableA union all select 0 as A, Utilizations as B from TableB)
我正在尝试基于数据库中多个不同表的数据构建一个访问报告。
我有3列执行计算,我想知道如何将这个查询放在一起。所有3列都处理日期,但计算方式不同。
如果操作类型为“B”,则第一列检索用户if的最新操作日期:
select pid, Max(date) as most_recent
from actions
where ref = 'B'
group by pid;
第二列根据两个字段执行计算,一个是日期,一个是月份内的数字。我不知道如何添加这两个字段,以便将数字添加到日期,作为一个月数。
到目前为止,我得到的是:
select nummonths,Max(lastvisit) f
我有一个正常工作的SQL查询,但我需要再添加一列。这一列在不同的表上,我不知道如何将它们组合在一起。 这是可以工作的代码。它选择与其他用户共享名字和姓氏的所有活动用户(我们正在寻找重复的用户) SELECT UserTable.LastName,
UserTable.FirstName
FROM UserTable
INNER JOIN InfoTable
ON InfoTable.ID=UserTable.ID
WHERE InfoTable.Number > 2500 and Infotable.Inactive = 0
GROUP BY FirstName
我有一个网络应用程序,使用服务器端处理的DataTables。我有一些SQL查询可以任意地对列中的数据进行重新分组,所以我得到的查询如下:
SELECT case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END AS `column grouped`, SUM(`2010`)
GROUP BY `colonne grouped`
现在,我添加了一些基于用户输入的过滤,我喜欢这样:
SELECT case `colu
以下是可能的吗?
SELECT f.*, (SELECT QUERY WHICH PULLS OUT A STRING VALUE) AS record_type
FROM foo f
AND f.record_type > 0
本质上,我想查询一个动态列。我还尝试过以下几种方法,但我也没有任何运气:
SELECT f.*
FROM foo f
AND f.(SELECT QUERY WHICH PULLS OUT A STRING VALUE) > 0
这在mysql中可能吗?
我有两个具有相似字段的表,但是当我在WHERE子句中执行SELECT子查询时,查询失败。
SELECT foo
FROM bar
WHERE fizz IN (SELECT fizz FROM fuzz)
我从亚马逊网络服务中删除了error.log,但错误的程度是HIVE无法识别SELECT。
我需要如何重构这个查询?
谢谢。
我知道这个错误
每个组按表达式必须至少包含一个不是外部引用的列。
我将日期插入到临时表中,错误按查询位于以下组(仅在某些排序规则上)
insert into @Temp(Name, ID)
select
USR.Name,
ISNULL((SELECT SUM(BCR.QUANTITY)
FROM Rate BCR
WHERE BCR.RateID = USR.RateID
GROUP BY USR.RateID), 0) AS TotalQu
此查询应根据Error_Type (嵌套)和应用程序(嵌套)总结Failed_Record_Count列中的所有记录。Total_Record_Count列应该汇总表中的所有记录(不包括未嵌套的表)。但是,在子查询中引用a.timestamp的错误称为既不分组也不聚合。
我注意到,当从select列表中删除"DATE“函数时,它成功执行,但没有预期的输出。我期望它将按日期而不是按时间戳进行分组,因此,我试图按日期而不是按时间戳对记录进行汇总。
请帮帮忙。
SELECT
DATE(timestamp) AS Date,
status AS Status,
prog
当我编写包含in子句的sql语句时,如果in语句中的列不存在,它不会抛出错误,而只是忽略in语句并返回结果集。
下面的查询将返回T1中的所有行
SELECT * FROM T1 WHERE Id IN(SELECT Id FROM T2)
这是SQL的正确行为吗?我的本地MS SQL server会抛出一个错误,该列不存在。
我有一个基于COUNT列值的Server查询。
如下所示:
SELECT
[id],
COUNT(*) AS IdCount,
FROM
myTable
WHERE
DATEDIFF(day, [Time], GETDATE()) < 30
GROUP BY
[id]
我想在COUNT条件中添加WHERE结果的值。我怎么能这么做?
SELECT
[id],
COUNT(*) AS IdCount,
RANK() OVER (ORDER BY IdCount) CountRank
FROM
我正在调试Oracle19c中的一个查询,该查询试图按照查询中的字段对SELECT DISTINCT结果进行排序。(注:这是错误的做法。不要这样做。)
此查询试图首先返回与最近的销售日期排序的客户名称的唯一列表。它返回一个预期的错误,"ORA-01791:不是SELECTed表达式“。
SELECT DISTINCT CUSTOMER_NAME
FROM SALES
ORDER BY LAST_SALE_DATE DESCENDING;
它返回一个错误,因为查询试图按未被选中的字段对结果排序。到目前为止,这是合理的。
但是,如果我简单地将FETCH FIRST 6 ROWS ONLY添
我有一个类似这样的查询:
SELECT 'FY2000' AS FY, COUNT(DISTINCT SGBSTDN_PIDM) AS CHEM_MAJORS
FROM SATURN.SGBSTDN, SATURN.SFRSTCR
WHERE SGBSTDN_PIDM = SFRSTCR_PIDM
AND SGBSTDN_TERM_CODE_EFF = (SELECT MAX(SGBSTDN_TERM_CODE_EFF)
FROM SATURN.SGBSTDN
很抱歉发布了一个与被多次询问的问题类似的问题。我找不到另一个线程来返回其他字段以及薪水字段。我的SQL在下面,我只需将3替换为我正在查找的数字或。但是,我不确定如何从tblPerson返回Name、Age和City字段。我知道需要某种形式的子查询,但我还没能弄清楚。任何帮助都将不胜感激。提前谢谢你!
Select TOP 1 Salary
FROM
(Select DISTINCT TOP 3 Salary
FROM tblPerson
Order By Salary DESC) Result
ORDER BY Salary
我试图显示我的查询中3个表中的一个列,但我似乎不知道如何让它正常工作。无论我怎么尝试,它似乎都不起作用。这看起来很简单,但也许我遗漏了一些真正简单的东西。这就是我所拥有的:
SELECT hpg.id_number,
hpg.id_description,
COUNT (hdd.number_of_games) games,
SUM (NVL (price, 0)) total,
SUM (number_of_food) food
--I tried adding column here, but nothing seemed to work
FROM
我希望两个ID可以基于匹配/相似对字段值旋转到同一行。目前,ID仅在单个列中列出,我按PAIR字段的值进行排序。 下面是我当前正在运行的查询。 select ID,PAIR
from Table
where PAIR in
(select PAIR from Table
where ID in
(select ID
from review
where rule = 1234456
and trunc(RECVDDATE) = trunc(sysdate-1)
)
)
order by PAIR;
ID PAIR
4
我正在尝试对子查询执行更新,其中更新表被连接到子查询中。我不知道如何将更新记录与在子查询中找到的记录关联起来。如下所示,尽管按照编写的方式,这显然会更新整个表。提前谢谢。
Update OPTION OPT
SET (PSTREET, PCITY, PPROVINCE, PCOUNTRY, PPOSTALCODE)=
(select ADDRESS, CITY, PROVSTATE, COUNTRY, POSTALCODE
from ADDRESSES addr INNER JOIN COMPANY C ON C.SECURITYCOMPANY = addr.CODE1 || addr.CO
假设我有一个只有两列的表:id,maturity。maturity是将来的某个日期,它代表的是某个特定条目何时可用。因此,对于不同的条目,它是不同的,但不一定是唯一的。并且随着时间的增加,还没有到达这个maturity的条目的数量发生了变化。
我需要从这样一个表中统计一些在特定日期可用的条目(因此,还没有达到它们的成熟度)。因此,我基本上需要加入这两个查询:
SELECT generate_series as date FROM generate_series('2015-10-01'::date, now()::date, '1 day');
SELECT
我有两个表-- tblDividendData和tblStockPrice --我一直试图构造一个查询,从tblDividendData中提取字段,以及最近tblStockPrice的收盘价。我不是SQL专家,所以我在这里分享了我的尝试,但我花了几个小时,似乎什么都试过了,但我无法让它返回正确的结果。我的查询如下:
SELECT tblDividendData.divOrganization,
tblDividendData.divExDividendDate,
(SELECT Close
FROM tblStockPrice s
WHERE Dat