小编McN*_*ets的帖子

使用 GROUP BY 的情况

我有一个看起来像这样的表格(实际案例的过度简化案例来表明我的观点)

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)

mysql postgresql group-by

3
推荐指数
1
解决办法
2万
查看次数

触发器执行的最后时间

SQL SERVER 2014 - 有没有办法知道上次执行触发器的时间?

trigger sql-server sql-server-2014

3
推荐指数
1
解决办法
6471
查看次数

pg_dump 自定义存档并创建备份日期

我有由pg_dump.

它是否包含备份创建日期?

我不能自己创建备份。我通过特定的网络频道收到存档文件。备份文件有接收日期时间戳,但没有在服务器上创建的日期。

postgresql pg-dump

3
推荐指数
1
解决办法
517
查看次数

使用 TYPE 作为表值参数的权限

我正在开发一个 .Net 应用程序,它调用一个存储过程,该存储过程具有一个声明为 TYPE READONLY 的表值参数。

第一次尝试调用 SP 时,我收到了下一个错误:

消息 229,级别 14,状态 5,第 1 行
对象“TYPE_OBJ”、数据库“MY_DB”、架构“dbo”的 EXECUTE 权限被拒绝。

向用户授予 EXECUTE 权限后,它工作正常。

但是我在 MS-DOCS 中都找不到CREATE TYPE使用表值参数中的任何对将其用作参数所需的权限的引用。

在哪里可以找到有关使用 TYPE 作为参数的必要权限的信息?

sql-server sql-server-2014

3
推荐指数
1
解决办法
395
查看次数

如何检查在另一个表中没有具有某些特定值的条目的记录?

例如,如果我们有两个表:表 1 和表 2

表 1 - 主表(所有记录的唯一条目)表 2 - 是一个历史表(其中包含基于时间戳的同一记录的许多条目)(还包含一些特定的字段类型)

我需要检索数据,例如 table1 中的所有数据,其中没有 type = 'Some vaue' 的记录条目

query

2
推荐指数
1
解决办法
3万
查看次数

具有 MAX 条件的 SQL Sum

我有两个名为 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 的版本都是最大值。

有人可以帮忙吗?

sql-server

2
推荐指数
1
解决办法
5774
查看次数

从左表返回所有数据

我的左表比右表包含更多的商店名称。我以为快速左连接会返回该数据集,但无济于事!

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)

sql-server t-sql sql-server-2008-r2

2
推荐指数
1
解决办法
621
查看次数

PostgreSQL 9.6 错误:资源管理器 ID 无效

我在 PostgreSQL 9.6 服务器日志文件中遇到这样的错误消息(在尝试时pg_rewind):

LOG: invalid resource manager ID 119 at 0/910CE68
Run Code Online (Sandbox Code Playgroud)

什么是 (PostgreSQL) 资源管理器以及为什么它必须在 WAL 文件中标识?

postgresql postgresql-9.6

2
推荐指数
1
解决办法
7622
查看次数

SQL 查询 - 如何选择显示组、组总计、总计?

我看过一些建议,但想知道在不使用子查询或不必要的联接的情况下从数据表中选择组、组总数、总计的最佳方法。

我最初的想法是这样的:

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)

不过,这仍然涉及子查询,这没关系。我只是觉得我在这里缺少一个简单的功能。

sql-server aggregate group-by

2
推荐指数
2
解决办法
2307
查看次数

Postgres 错误:必须出现在 GROUP BY 子句中或在聚合函数中使用

我是 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其中有一个idimage_id并且keyword_id它是用来关联图像和关键字规范地。

如果我添加p_search.idGROUP BY子句中,结果不正确 -count总是 1。有没有办法对结果进行分组,以便image_ids 具有匹配关键字的数量?

我正在寻找两列count- 匹配关键字的数量和 …

postgresql postgresql-9.3

1
推荐指数
1
解决办法
2万
查看次数