我有以下查询,它试图找出某个产品与产品总数相比的百分比.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()字段?
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".
我想从一张有大约400万条记录的表中改变一个字段.我确保所有这些字段值都是非NULL并且希望将此字段更改为NOT NULL
ALTER TABLE dbo.MyTable
ALTER COLUMN myColumn int NOT NULL
Run Code Online (Sandbox Code Playgroud)
...似乎需要永远做这个更新.有什么方法可以加快速度,或者我只是在非工作时间过夜?
这也可能导致表锁定?
我有一个包含一些行的表.每行都有一个日期字段.现在,它可能是日期的重复.我需要删除所有重复项,只存储最高的行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世界很陌生.这是我的问题:
谢谢你的解释.
与此问题类似,我需要将大量记录分组为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获取每小时统计信息.
我有一个像下面这样的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
假设我有一个包含karma_up和karma_down的表.每当有人投票时,karma_up会增加,每次有人投票时,karma_down也会增加.如何提取这些选择的行并按这些新值的总和对它们进行排序?ORDER BY(karma_up - karma_down)似乎并不像我想要的那样工作.我只想把具有最高业力的行排在最前面.
我正在使用以下查询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.company
或a.name
使用任何公司名称时,此查询运行正常.为什么此查询不适用于列名?
什么会导致Management Studio中的查询被暂停?
通过对另一个相关问题进行一些搜索,我遇到了一个使用DBCC FREEPROCCACHE修复它的人.
但是,问题仍然出现在不同的查询中.
检查活动日志以查看何时执行打开表,显示会话已暂停,等待类型为"Async_Network_IO".对于运行90000选择的会话,状态为"正在休眠",这与上面选择的70000查询的状态相同,但是在45分钟内返回.我很奇怪状态显示"睡眠"并且它似乎没有变为"可运行"(我的活动监视器刷新了30秒).
补充说明: