我有两张桌子points,contacts而且我试图points.score按月分组每个联系人的平均值. 请注意,积分和联系人不相关,我只想要在一个月内创建的积分总和除以该月份存在的联系人数量.
所以,我需要总结按created_at月份分组的点数,我需要只计算那个月份的联系人数量.这是最后一部分让我烦恼的部分.我不确定如何在子查询中使用外部查询中的列.我试过这样的事情:
SELECT SUM(score) AS points_sum,
EXTRACT(month FROM created_at) AS month,
date_trunc('MONTH', created_at) + INTERVAL '1 month' AS next_month,
(SELECT COUNT(id) FROM contacts WHERE contacts.created_at <= next_month) as contact_count
FROM points
GROUP BY month, next_month
ORDER BY month
Run Code Online (Sandbox Code Playgroud)
所以,我正在提取我的积分总和的实际月份,同时,得到next_month的开头,这样我就可以说"让我知道他们创建的联系人的数量是<next_month"
但它抱怨说column next_month doesn't exist 这是可以理解的,因为子查询对外部查询一无所知.资格赛points.next_month也不起作用.
那么有人能指出我如何实现这一目标的正确方向吗?
点
score | created_at
10 | "2011-11-15 21:44:00.363423"
11 | "2011-10-15 21:44:00.69667"
12 | "2011-09-15 21:44:00.773289"
13 | "2011-08-15 21:44:00.848838"
14 | "2011-07-15 …Run Code Online (Sandbox Code Playgroud) 我在SQL Server中有以下格式的数据.
-ID ID2 status time
-1384904453 417 stop 2013-11-19 23:40:43.000
-1384900211 417 start 2013-11-19 22:30:06.000
-1384822614 417 stop 2013-11-19 00:56:36.000
-1384813810 417 start 2013-11-18 22:30:06.000
-1384561199 417 stop 2013-11-16 00:19:45.000
-1384554623 417 start 2013-11-15 22:30:06.000
-1384475231 417 stop 2013-11-15 00:26:58.000
-1384468224 417 start 2013-11-14 22:30:06.000
-1384388181 417 stop 2013-11-14 00:16:20.000
-1384381807 417 start 2013-11-13 22:30:06.000
-1384300222 417 stop 2013-11-12 23:50:11.000
-1384295414 417 start 2013-11-12 22:30:06.000
-1384218209 417 stop 2013-11-12 01:03:17.000
-1384209015 417 start 2013-11-11 22:30:06.000
Run Code Online (Sandbox Code Playgroud)
我需要的是能够以下列格式显示数据.
-ID2 start stop …Run Code Online (Sandbox Code Playgroud) 我有一张cats42,795,120行的表.
显然这是很多行.所以当我这样做时:
/* owner_cats is a many-to-many join table */
DELETE FROM cats
WHERE cats.id_cat IN (
SELECT owner_cats.id_cat FROM owner_cats
WHERE owner_cats.id_owner = 1)
Run Code Online (Sandbox Code Playgroud)
查询超时:(
(编辑:我需要增加我的 CommandTimeout 值,默认只有30秒)
我不能用,TRUNCATE TABLE cats因为我不想吹掉其他主人的猫.
我正在使用SQL Server 2005,其中"恢复模式"设置为"简单".
所以,我想做这样的事情(从应用程序btw执行这个SQL):
DELETE TOP (25) PERCENT FROM cats
WHERE cats.id_cat IN (
SELECT owner_cats.id_cat FROM owner_cats
WHERE owner_cats.id_owner = 1)
DELETE TOP(50) PERCENT FROM cats
WHERE cats.id_cat IN (
SELECT owner_cats.id_cat FROM owner_cats
WHERE owner_cats.id_owner = 1)
DELETE FROM cats
WHERE cats.id_cat …Run Code Online (Sandbox Code Playgroud) 我想要做的是显示一个简单的数据网格,其中包含实体数据及其子项的聚合数据.例如,我们使用订单和订单项.我想显示订单信息和订单项的数量.
OrderID,OrderDate,NumOfLineItems
现在通常在SQL中,您可以通过多种方式完成.但这是我能想到的唯一可以在翻译成NHibernate时使用的方法.
SELECT o.OrderID, OrderDate, NumOfLineItems
FROM #Orders o
INNER JOIN
(SELECT o2.OrderID, COUNT(*) As NumOfLineItems FROM #LineItems l
INNER JOIN #Orders o2 ON o2.OrderID = l.OrderID
WHERE UserID = 1 GROUP BY o2.OrderID) t1 ON o.OrderID = t1.OrderID
WHERE UserID = 1
Run Code Online (Sandbox Code Playgroud)
我知道还有其他方法,但我正在考虑NHibernate允许我使用QueryOver语法的方式.我不想使用派生列.我试图避免编写SQL.
对于我的实体,我有一个Order实体和一个AggregatedOrder实体,在这种情况下它将是我的DTO,我计划使用变换器aliastobean将数据复制到其中.
我完全不知道如何解决这个问题.
到目前为止我所有的一切:
QueryOver<LineItem> x = QueryOver.Of<LineItem>()
.SelectList(p => p .SelectCount(l => l.Id).WithAlias(() => itemAlias.NumOfLineItems))
.JoinQueryOver<Order>(l => l.Order)
.Where(o => o.UserID == userID)
var y = session.QueryOver<Listing>()
.JoinQueryOver<Bid>(x); // no idea whats going on here
Run Code Online (Sandbox Code Playgroud) 我的问题由以下查询表示:
SELECT
b.row_id, b.x, b.y, b.something,
(SELECT a.x FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_x,
(SELECT a.y FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_y
FROM
my_table b
Run Code Online (Sandbox Code Playgroud)
我使用相同的子查询语句两次,以获得两者source_x和source_y.这就是为什么我想知道是否可以只使用一个子查询来做到这一点?
因为一旦我对我的真实数据(数百万行)运行此查询,它似乎永远不会完成并花费数小时,如果不是几天(我的连接在结束前挂起).
我正在使用PostgreSQL 8.4
我遇到一种情况,我需要能够查看给定的人是否在用户/经理层次结构中。
我需要能够根据一组规则为一组用户执行此操作(不用担心这一点,只是为了给它一些背景信息)
理想情况下,我想在 where 子句的相关存在子查询中使用递归 CTE。
但这会带来很多问题..
我想我想做的是:
WITH UserHierarchy(UserId, ManagerId)
AS
(
--Anchor Definition
SELECT [UserId], [ManagerId] FROM [Users] WHERE [ManagerId] = [Rules].[RuleAddedByUserId] -- this needs to bind to an outer query....
UNION ALL
--Recursive Member definiation
SELECT [Users].[UserId], [Users].[ManagerId] FROM [Users]
INNER JOIN [UserHierarchy] ON [Users].[ManagerId] = [UserHierarchy].[UserId]
WHERE [Users].[UserId] <> [Users].[ManagerId] --don't recurse if the anchor definition matches itself (to avoid an infinate loop).
)
Run Code Online (Sandbox Code Playgroud)
无论如何,是否可以在兼容模式 …
sql recursion sql-server-2005 common-table-expression correlated-subquery
我正在尝试构建一个查询,比较两个具有相同结构的表
Table 1:
ID | Data
Table 2:
ID | Data
Run Code Online (Sandbox Code Playgroud)
ID是一个非唯一键(数据是可重复的,但ID |数据组合是唯一的).我需要一个ID列表,其中表2中这些ID的COUNT大于表1中的ID.
例如,如果
Table 1
a | data
a | data1
b | data2
Table 2
a | data
a | data1
b | data2
b | data3
Run Code Online (Sandbox Code Playgroud)
会产生输出"b"
这感觉应该很容易,但我的脑袋现在已经乱了.如果影响选项,我在mysql中这样做.
我搜索了很多主题并没有找到答案,或者问题太复杂了.好吧 这是我的第一个问题.这是SQL
SELECT parent.*,
(
SELECT COUNT(*)
FROM child
WHERE parent.id = child.parent_id
)
FROM parent
Run Code Online (Sandbox Code Playgroud)
如何在sqlalchemy中执行此子句?
WHERE ui.invited_by = u.id
Run Code Online (Sandbox Code Playgroud)
可以在收藏中复制吗?sql表达式?PS我知道它可以通过group_by来完成.但我需要通过子查询.
谢谢.
有没有办法用JPA 2编写CriteriaBuilder相当于以下查询?
select * from season s1
where end = (
select max(end)
from season s2
where s1.contest_id=s2.contest_id
);
Run Code Online (Sandbox Code Playgroud)
在JPQL中,此查询是:
Select s1 from Season s1
where s1.end = (
select max(s2.end)
from Season s2
where s1.contest=s2.contest
)
Run Code Online (Sandbox Code Playgroud) 我正在尝试确定以下查询是否存在"低成本"优化.我们已经实施了一个系统,"门票"可以获得"积分",因此可以进行排名.为了支持分析类型的查询,我们将每个票证的等级(票证可以绑定)与票证一起存储.
我发现,在规模上,更新此排名非常缓慢.我试图在一组大约20k门票的"门票"上运行下面的场景.
我希望有人可以帮助确定原因并提供一些帮助.
我们在postgres 9.3.6
这是一个简化的票证表架构:
ogs_1=> \d api_ticket
Table "public.api_ticket"
Column | Type | Modifiers
------------------------------+--------------------------+---------------------------------------------------------
id | integer | not null default nextval('api_ticket_id_seq'::regclass)
status | character varying(3) | not null
points_earned | integer | not null
rank | integer | not null
event_id | integer | not null
user_id | integer | not null
Indexes:
"api_ticket_pkey" PRIMARY KEY, btree (id)
"api_ticket_4437cfac" btree (event_id)
"api_ticket_e8701ad4" btree (user_id)
"api_ticket_points_earned_idx" btree (points_earned)
"api_ticket_rank_idx" btree ("rank")
Foreign-key constraints:
"api_ticket_event_id_598c97289edc0e3e_fk_api_event_id" FOREIGN KEY (event_id) …Run Code Online (Sandbox Code Playgroud) sql postgresql correlated-subquery sql-update postgresql-performance
sql ×7
postgresql ×3
subquery ×3
sql-server ×2
aggregate ×1
closures ×1
criteria-api ×1
indexing ×1
jpa ×1
jpa-2.0 ×1
mysql ×1
nhibernate ×1
performance ×1
pivot ×1
queryover ×1
recursion ×1
sql-delete ×1
sql-update ×1
sqlalchemy ×1