标签: sql

SQL除以两个计数()

我有以下查询,它试图找出某个产品与产品总数相比的百分比.IE:[产品数量]/[总产品数量] =百分比

;WITH totalCount AS(
    SELECT 
        CAST(COUNT(id) as Integer)as totalCount
    FROM TABLE_NAME
)
SELECT 
    ((CAST(COUNT(DISTINCT id) as Integer)/(SELECT * FROM totalCount))*100) as 'Percent'
FROM TABLE_NAME
Run Code Online (Sandbox Code Playgroud)

但是,除非只有一条记录,否则百分比列始终返回"0".另外,有没有办法将totalCount和Select查询添加到一个?

基本上,你如何划分两个Count()字段?

sql sql-server count

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

模糊列名称错误,我该如何解决?

1. Users 4 Cols
UserID - UserName - RealName - Flags

2. UsersGroups 2 Cols
UserID - GroupID

3. Groups 3 Cols
GroupID - GroupName - Flags
Run Code Online (Sandbox Code Playgroud)

我想要做的是选择一个特定的UserName即USERA并更新Flags列.但我还想将Groups表中的Flags列更新为相同的值.

UPDATE dbo.Users
SET Flags = @var
WHERE UserName = 'UserA'

UPDATE dbo.Groups
SET Flags = @var
FROM dbo.Users u INNER JOIN dbo.UsersGroups ug ON u.UserID = ug.UserID
INNER JOIN dbo.Groups g ON g.GroupID = ug.GroupID
WHERE u.UserName = 'UserA'
Run Code Online (Sandbox Code Playgroud)

但我不断得到:不明确的专栏名称'Flags'.

如果我设置Groups.Flags = @Var我得到:消息4104,级别16,状态1,行1无法绑定多部分标识符"Groupy.Flags".

sql t-sql sql-server

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

SQL Server ALTER字段NOT NULL永远需要

我想从一张有大约400万条记录的表中改变一个字段.我确保所有这些字段值都是非NULL并且希望将此字段更改为NOT NULL

ALTER TABLE dbo.MyTable
ALTER COLUMN myColumn int NOT NULL
Run Code Online (Sandbox Code Playgroud)

...似乎需要永远做这个更新.有什么方法可以加快速度,或者我只是在非工作时间过夜?

这也可能导致表锁定?

sql sql-server ddl nullable blocking

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

如何用SQL删除重复的行?

我有一个包含一些行的表.每行都有一个日期字段.现在,它可能是日期的重复.我需要删除所有重复项,只存储最高的行id.如何使用SQL查询?

现在:

date      id
'07/07'   1
'07/07'   2
'07/07'   3
'07/05'   4
'07/05'   5
Run Code Online (Sandbox Code Playgroud)

我想要的是:

date      id
'07/07'   3
'07/05'   5
Run Code Online (Sandbox Code Playgroud)

sql

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

存储过程是否有助于消除SQL注入/应用程序中存储过程优于普通SQL语句的好处是什么?

我对SQL世界很陌生.这是我的问题:

  • 在应用程序中,存储过程优于普通SQL语句有什么好处?
  • 存储过程是否有助于消除SQL注入?
  • 在Microsoft SQL Server中,它称为存储过程.在Oracle,MySQL,DB2等中怎么样?

谢谢你的解释.

sql database stored-procedures

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

将SQL结果分组/聚合为1小时存储桶

此问题类似,我需要将大量记录分组为1小时的"桶".例如,假设我有一个典型的ORDER表,每个订单附有一个日期时间.我希望看到每小时的订单总数.所以我大致使用SQL大致如下:

SELECT datepart(hh, order_date), SUM(order_id)
FROM ORDERS
GROUP BY datepart(hh, order_date)
Run Code Online (Sandbox Code Playgroud)

问题是如果给定的1小时"桶"中没有订单,则不会向结果集中发出任何行.我希望结果集在24小时内每行都有一行,但如果在特定小时内没有订单,只需将订单数记录为O.

有没有办法在单个查询中执行此操作?

另请参阅使用SQL获取每小时统计信息.

sql sql-server postgresql

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

MySQL,获得用户排名

我有一个像下面这样的mysql表:

id     name     points
1      john     4635
3      tom      7364
4      bob      234
6      harry    9857
Run Code Online (Sandbox Code Playgroud)

我基本上想要在不选择所有用户的情况下获得个人用户排名.我只想按id选择一个用户,并获得用户排名,这取决于他们拥有的点数.

例如,通过id 3选择等级2来获取tom.

干杯

EEF

mysql sql rank

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

按两个字段的总和排序

假设我有一个包含karma_up和karma_down的表.每当有人投票时,karma_up会增加,每次有人投票时,karma_down也会增加.如何提取这些选择的行并按这些新值的总和对它们进行排序?ORDER BY(karma_up - karma_down)似乎并不像我想要的那样工作.我只想把具有最高业力的行排在最前面.

mysql sql cakephp

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

在MySQL中的RegExp中使用列

我正在使用以下查询regexp:

SELECT a.id, a.company, a.name, b.title, b.description, b.t_id
FROM a, b
WHERE ( b.title
REGEXP "[[:<:]]a.company[[:>:]]" OR b.description
REGEXP "[[:<:]]a.company[[:>:]]" OR b.title
REGEXP "[[:<:]]a.name[[:>:]]"  OR b.description
REGEXP "[[:<:]]a.name[[:>:]]" ) AND a.company !=  '' AND a.name !=  ''
Run Code Online (Sandbox Code Playgroud)

但是,此查询不会给出任何结果,也不会给出任何语法错误.

当我替换a.companya.name使用任何公司名称时,此查询运行正常.为什么此查询不适用于列名?

regex mysql sql

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

SQL活动监视器中的挂起状态

什么会导致Management Studio中的查询被暂停?

  1. 我从一个表(有1100万行)执行一个简单的选择前60000,结果在一两秒内返回.
  2. 我将查询更改为前70000,结果最多需要40分钟.

通过对另一个相关问题进行一些搜索,我遇到了一个使用DBCC FREEPROCCACHE修复它的人.

  1. 我运行DBCC FREEPROCCACHE,然后重做70000的查询,它似乎工作.

但是,问题仍然出现在不同的查询中.

  1. 我增加到90000或者如果我尝试使用[Right-> Open Table]打开表格,它会提取大约8000条记录并停止.

检查活动日志以查看何时执行打开表,显示会话已暂停,等待类型为"Async_Network_IO".对于运行90000选择的会话,状态为"正在休眠",这与上面选择的70000查询的状态相同,但是在45分钟内返回.我很奇怪状态显示"睡眠"并且它似乎没有变为"可运行"(我的活动监视器刷新了30秒).

补充说明:

  • 我没有运行Open Table并同时选择90000.所有查询都是一次完成一个.
  • 我正在运行32位SQL Server 2005 SP2 CU9.我尝试升级到SP3但遇到了安装失败.在我尝试升级之前,问题就出现了.
  • 服务器设置是主动/主动群集,问题发生在任一节点上,而另一个实例没有此问题.
  • 我在同一服务器实例上有~20个其他数据库,但只有这一个DB才能看到问题.
  • 这个数据库变得相当大.目前它在76756.19MB.数据文件为11,513MB.
  • 我使用远程桌面在服务器框上本地登录.

sql sql-server suspend

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