我有一个看起来像这样的表格(实际案例的过度简化案例来表明我的观点)
CREATE TABLE sales (
id int,
currency VARCHAR(5),
price int
shop_id int
);
Run Code Online (Sandbox Code Playgroud)
现在我需要进行一个查询,该查询将为我提供类似此表的内容,按商店分组,但给出每种货币的销售额总和我的问题是,当我将货币列设置为非聚合时,它会失败,因为我的查询变得非标准。当我将货币添加到分组依据时,每种货币都会创建新行,这是我不想要的。我已经没有选择了,希望得到任何帮助或指向正确方向的指示。
我使用 MySQL,但如果我能得到适用于更多数据库的解决方案,我将不胜感激(PostGreSQL 位于 MySQL 之后的列表顶部)
查询会产生不需要的结果
SELECT shop_id,
(CASE WHEN currency= "GBP" THEN SUM(price) ELSE 0 END) AS POUND,
(CASE WHEN currency= "USD" THEN SUM(price) ELSE 0 END) AS USDOLLAR
GROUP BY shop_id, currency
Run Code Online (Sandbox Code Playgroud)
查询应生成的数据
shop_id | POUND | USDOLLAR
-----------------------------------------
1 | 400 | 300
-----------------------------------------
2 | 250 | 100
-----------------------------------------
3 | 400 | 100
-----------------------------------------
Run Code Online (Sandbox Code Playgroud) SQL SERVER 2014 - 有没有办法知道上次执行触发器的时间?
我有由pg_dump.
它是否包含备份创建日期?
我不能自己创建备份。我通过特定的网络频道收到存档文件。备份文件有接收日期时间戳,但没有在服务器上创建的日期。
我正在开发一个 .Net 应用程序,它调用一个存储过程,该存储过程具有一个声明为 TYPE READONLY 的表值参数。
第一次尝试调用 SP 时,我收到了下一个错误:
消息 229,级别 14,状态 5,第 1 行
对象“TYPE_OBJ”、数据库“MY_DB”、架构“dbo”的 EXECUTE 权限被拒绝。
向用户授予 EXECUTE 权限后,它工作正常。
但是我在 MS-DOCS 中都找不到CREATE TYPE和使用表值参数中的任何对将其用作参数所需的权限的引用。
在哪里可以找到有关使用 TYPE 作为参数的必要权限的信息?
例如,如果我们有两个表:表 1 和表 2
表 1 - 主表(所有记录的唯一条目)表 2 - 是一个历史表(其中包含基于时间戳的同一记录的许多条目)(还包含一些特定的字段类型)
我需要检索数据,例如 table1 中的所有数据,其中没有 type = 'Some vaue' 的记录条目
我有两个名为 Claim 的表
EmployeeClaimId
1144
3481
3452
5760
7296
Run Code Online (Sandbox Code Playgroud)
和索赔状态
EmployeeClaimId Amount Version
7 0.00 1
7 300.00 3
7 150.00 3
7 400.00 1
7 300.00 7
14 1860.00 1
14 541.00 7
14 530.00 1
14 2490.00 1
Run Code Online (Sandbox Code Playgroud)
我想要第二个表中的金额总和,其中每个 claimid 的版本都是最大值。
有人可以帮忙吗?
我的左表比右表包含更多的商店名称。我以为快速左连接会返回该数据集,但无济于事!
Data In From 子句有最多的选项,我想显示所有这些 Data In Left Join 子句有一些但不是我想显示的所有选项
我创建了 CTE 来获取 SUM() 并将数据拉到主查询中存在于左连接表中
这是我使用的查询,它没有给出我想要的结果。
;With DataFromOne As
(
Select StoreName
,DataFromOne = Count(ramalad)
FROM DataFromOne
WHERE EntryDate BETWEEN '20170101' AND '20170331'
GROUP BY StoreName
)
Select ec.StoreName
,[Emp Count] = COUNT(Employee)
,[PT Count] = COALESCE(ec.DataFromOne,0)
FROM DataFromOne ec
LEFT OUTER JOIN DataFromTwo fji
ON ec.StoreName = fji.StoreName
WHERE fji.saleDate BETWEEN '20170101' AND '20170331'
GROUP BY ec.StoreName, ec.DataFromOne
ORDER BY ec.StoreName ASC;
Run Code Online (Sandbox Code Playgroud) 我在 PostgreSQL 9.6 服务器日志文件中遇到这样的错误消息(在尝试时pg_rewind):
LOG: invalid resource manager ID 119 at 0/910CE68
Run Code Online (Sandbox Code Playgroud)
什么是 (PostgreSQL) 资源管理器以及为什么它必须在 WAL 文件中标识?
我看过一些建议,但想知道在不使用子查询或不必要的联接的情况下从数据表中选择组、组总数、总计的最佳方法。
我最初的想法是这样的:
select product_family,
sum(widgets),
sum(widgets) over ()
from table.widget
group by product_family
Run Code Online (Sandbox Code Playgroud)
或以下内容:
select product_family,
sum(widgets),
sum(widgets) over (partition by all_field)
from table.widget
group by product_family
Run Code Online (Sandbox Code Playgroud)
显然这两种方法都不起作用。我知道一个分区的顺序可能比实际的行/组更高,但除了第一个示例将其留空之外,我不知道如何按“所有”进行分区。但是,它打破了 group by 语句。
我能找到的最好的是这样的:
select product_family,
family_sum,
sum(family_sum) over () as grand_sum
from (
select product_family, sum(widgets)
from table.widget
group by product_family
) as A
Run Code Online (Sandbox Code Playgroud)
不过,这仍然涉及子查询,这没关系。我只是觉得我在这里缺少一个简单的功能。
我是 Postgres 的新手,我意识到以前有人问过类似的问题,但是,我正在努力使这个查询工作:
SELECT p_search.id, count(kia.image_id) AS count
FROM (SELECT id,
keyword,
to_tsvector('english',keyword) AS tskw
FROM keyword) AS p_search
LEFT JOIN keyword_image_assoc AS kia
ON kia.keyword_id = p_search.id
WHERE p_search.tskw @@ plainto_tsquery('english','resident life')
OR p_search.tskw @@ plainto_tsquery('english','wofford')
GROUP BY kia.image_id
ORDER BY count desc
Run Code Online (Sandbox Code Playgroud)
对于上下文,我有三个表:
image其中有一个id作为主键keyword它具有id作为主键,keyword它是一个表示关键字的字符串keyword_image_assoc其中有一个id,image_id并且keyword_id它是用来关联图像和关键字规范地。如果我添加p_search.id到GROUP BY子句中,结果不正确 -count总是 1。有没有办法对结果进行分组,以便image_ids 具有匹配关键字的数量?
我正在寻找两列count- 匹配关键字的数量和 …
sql-server ×5
postgresql ×4
group-by ×2
aggregate ×1
mysql ×1
pg-dump ×1
query ×1
t-sql ×1
trigger ×1