小编Rya*_*don的帖子

GROUP BY SQL Server之后的总SUM的百分比

我有这些结果:

PersonID    SUM(PA.Total)
-------------------------
   1            75
   2            75
   3            15
   4            15
   5            60
   6            60
Run Code Online (Sandbox Code Playgroud)

用表如:

PersonID    Total
------------------
   1         50
   2         50
   3         10
   4         10
   5         40
   6         40
   1         25
   2         25
   3          5
   4          5
   5         20
   6         20
Run Code Online (Sandbox Code Playgroud)

这些按人分组.现在我想添加一个列,其中每个人的百分比是根据他们所有总和的总和来计算的.

例如:总和是300,因此我需要这样的结果:

PersonID    SUM(PA.Total)   Percentage
--------------------------------------
   1            75              25%
   2            75              25%
   3            15              5%
   4            15              5%
   5            60              20%
   6            60              20%
Run Code Online (Sandbox Code Playgroud)

我已经在线查看了代码,我提出了一个像这样的修复程序:

 SELECT 
     P.PersonID, SUM(PA.Total)
     SUM(PA.Total) * 100 / [p] AS 'Percentage'
 FROM …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join sum percentage

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

如何批量INSERT SQL Server?

我正在尝试将行从一个表批量插入到另一个表。

DECLARE @batch INT = 10000;

WHILE @batch > 0
BEGIN
BEGIN TRANSACTION

    INSERT into table2
    select top (@batch) *
    FROM table1

    SET @batch = @@ROWCOUNT

COMMIT TRANSACTION

END
Run Code Online (Sandbox Code Playgroud)

它在前 10,000 个上运行并插入它们。然后我收到错误消息“无法插入重复的键”,它试图插入相同的主键,所以我假设它试图重复同一批次。我在这里缺少什么逻辑来循环批次?可能很简单,但我无法弄清楚。

有人可以帮忙吗?谢谢

sql sql-server insert

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

别名上的JOIN语句 - SQL Server

我正在寻找有关使用别名而不是原始数据加入的最佳方式的建议.例如,数据在加入之前被修改.

一个例子:

CREATE TABLE Table1 (
No1 varchar(10)
);
CREATE TABLE Table2 (
No1 varchar(10)
);

INSERT INTO Table1 (No1)
VALUES ('222');
INSERT INTO Table2 (No1)
VALUES ('111');
Run Code Online (Sandbox Code Playgroud)

如果我使用case语句创建了一个连接,但我想加入case语句的别名,这不适用于通常的连接语法,例如

SELECT
CASE WHEN T1.[No1] = '222' THEN '111' ELSE T1.[No1] END AS [T1 No], 
T2.[No1] AS [T2 No]
FROM Table1 T1
FULL JOIN Table2 T2
ON T1.[No1] = T2.[No1]
Run Code Online (Sandbox Code Playgroud)

这给出了结果:

|  T1 No |  T2 No |
|--------+--------|
|    111 | (null) |
| (null) |    111 |
Run Code Online (Sandbox Code Playgroud)

http://www.sqlfiddle.com/#!18/203e8/1

但是,我加入别名的方法是:

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server alias join

7
推荐指数
1
解决办法
496
查看次数

EXEC声明中有两个百分点

在SQL Server 2014中,master数据库包含一个名为sp_rename的系统存储过程.我很想知道它是如何工作的,所以我一直在看它.

在第190行,有一个包含两个百分号的EXEC语句:

EXEC %%ScalarType(MultiName = @SchemaAndTypeName).LockMatchID(ID = 
@xusertype, Exclusive = 1)
Run Code Online (Sandbox Code Playgroud)

%%是什么意思?我在网上搜索过,但没有找到任何甚至远程提到它的东西.

sql sql-server

6
推荐指数
1
解决办法
176
查看次数

计算总和列而忽略Na

我正在尝试创建一个总计列,以将前面各列的值相加。但是,如果有NA,我将遇到困难。如果该行中没有NA,则我的脚本将不会计算总和。

我如何编辑以下脚本以将NA实质上计数为0,或者完全忽略它们,但仍计算总和。我实际上不想将NA更改为0。

CTDB %>% mutate(SCARED_TOTAL_CHILD = CTDB %>% rowwise() %>% 
SELECT(SCARED_BREATHE_CHILD:SCARED_SHY_CHILD) %>% rowSums()) -> CTDB
Run Code Online (Sandbox Code Playgroud)

谢谢!!

r rowsum na

4
推荐指数
1
解决办法
3233
查看次数

查询以数字或更高数字开头的结果-SQL Server

示例:http//sqlfiddle.com/#!18 / 7f3df / 2

CREATE TABLE Table1 (
Reg uniqueidentifier
);

INSERT INTO Table1 (Reg)
Values
('DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
('93015E10-8BD4-4401-B2DC-99BB03135F2E'),
('21215E10-8BD4-4401-B2DC-99BB03135F2E');
Run Code Online (Sandbox Code Playgroud)

查询:

select * from Table1
WHERE left(CAST(Reg AS CHAR(36)),1) > 8
Run Code Online (Sandbox Code Playgroud)

我需要创建一个查询,以查找所有以8或更高数字开头或以字母开头的结果,但我遇到了转换错误,但找不到解决方法。该列是唯一标识符。如何将其转换为可以过滤的内容?

谁能提供一些解决方案的建议?

谢谢

sql sql-server

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

postgresql JOIN 具有多个条件

我有两个 postgres 表:

worker_details_verification (verification_id BIGSERIAL, worker_id BIGINT, 
state TEXT, proofs TEXT[])
worker_details(worker_id BIGINT, name TEXT)
Run Code Online (Sandbox Code Playgroud)

现在我想得到

    `verification_id, worker_id, proofs FROM` the table 
    `worker_details_verification`  
Run Code Online (Sandbox Code Playgroud)

限制记录 `WHERE state = 'Initial'

现在除了上述三列之外,我worker_details还想要表中的名称列,其中worker_id可用于查询工人的姓名。

我尝试了以下查询,但没有成功。

SELECT a.verification_id, a.worker_id, a.state, a.proofs, b.Name FROM 
worker_details_verification a FULL OUTER JOIN worker_details b ON 
a.worker_id = b.worker_id AND a.state = 'Initial';
Run Code Online (Sandbox Code Playgroud)

它返回甚至 a.state 都不是的记录'Initial',并且还返回一些错误的记录,其中所有namefrom都与for列worker_detail一起返回。NULLworker_details_verification

sql postgresql

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

根据条件SQL Server插入和更改数据

我目前有Table1包括

 ID Gender
 1  m
 2  f
 3  f
 4  m
 5  f
 6  f
Run Code Online (Sandbox Code Playgroud)

现在我希望将这些数据插入第二个表(表2).但基本上我试图插入"男性"和"女性"这两个词.因此,例如当表1中的Gender ='m'时,我想将char'男性'插入到第二个表(table2)中,并将其插入到女性中.

我创建了一些代码,如

 UPDATE Table2
 SET 
 Gender =
 ( CASE WHEN Table1.Gender = 'm' THEN 'Male'
 WHEN Table1.Gender = 'f' THEN 'Female'
 ELSE 'N/a'
 END)
Run Code Online (Sandbox Code Playgroud)

如果有任何帮助,我有一个SQL Fiddle架构 -

http://sqlfiddle.com/#!9/8a3080

谢谢

sql sql-server insert case sql-update

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

特定行的GROUP BY

我有一个sql server结果,按人分组.而SUMS是他们的日常数字和月度数字.

    Person  Team    Daily Figure    Month To Date
    Tony    Team 1          53              635
    Dan     Team 2         47               172
    Tom     Team 3         17               232
    Simon   Team 2          16              655
    Ben     Team 3         17               232
    Fred    Team 2          16              655
Run Code Online (Sandbox Code Playgroud)

我如何仅仅通过团队2对这些结果进行分组?例如,我仍然希望其他个人结果显示,但我希望只将团队2组合在一起.

示例结果

   Person   Team    Daily Figure    Month To Date
    Tony    Team 1          53              635
    Tom     Team 3         17               232
    Ben     Team 3         17               232
   Team 2   Team 2         79              1482
Run Code Online (Sandbox Code Playgroud)

谢谢更新:

    SELECT 

     Person = case when Team = 'Team 2' 
     then …
Run Code Online (Sandbox Code Playgroud)

sql sql-server group-by

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

你能在SQL Server中使用MAX(*)吗?

我正在处理一个巨大的列列表(大约50个),我只需要按一列分组.无论如何在SQL Server中我可以通过诸如之类的东西来聚合列

SELECT MAX(*)
FROM View1
GROUP BY Column1
Run Code Online (Sandbox Code Playgroud)

而不是必须通过每一个并指定一个聚合函数.我在网上看过,但找不到任何东西.是否有人可以给我任何建议或指导,或者仅仅是经历每一行的情况?

谢谢

sql sql-server

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

标签 统计

sql ×9

sql-server ×8

insert ×2

join ×2

alias ×1

case ×1

group-by ×1

na ×1

percentage ×1

postgresql ×1

r ×1

rowsum ×1

sql-update ×1

sum ×1