[英]SQL Counting non numeric values from a column
我里面有一個名為 tasks 的表是
id
tasks
tasks_status
task_date
任務狀態為“完成”、“待處理”、“已轉發”、“已取消”。
如何查詢統計所有已完成、所有未決、所有轉發和所有取消的表。
我嘗試從 COUNT 進行所有調整,但無濟於事。 找了2個小時的方法。 請幫忙
我的目標是專門計算那些完成的,我可以獲得所有細節的計數,但只需要顯示完成的總數(例如)
分組依據更好,但如果您只想將指定為“完成”的那些指定為“完成”,則以下應該有效。
SELECT COUNT(*) FROM TASTS WHERE TASKS_STATUS='done'
Select 你想要的計數和分組。
SELECTS tasks_status, count(tasks_status) FROM status GROUP BY tasks_status;
select tasks_status, count(*) from tasks group by tasks_status
如果你想獲得所有計數,那么你需要使用 group by 但如果你只想獲得一個項目的計數,則不需要 group by 。
以下是生成場景的查詢
CREATE TABLE [dbo].[tasks](
[id] [int] IDENTITY(1,1) NOT NULL,
[tasks] [varchar](50) NULL,
[tasks_status] [varchar](50) NULL,
[task_date] [date] NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[tasks] ON
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (1, N'task1', N'pending', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (2, N'task2', N'forwarded', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (3, N'task3', N'pending', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (4, N'task4', N'done', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (5, N'task5', N'done', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (6, N'task6', N'cancelled', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (7, N'task7', N'done', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (8, N'task8', N'forwarded', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (9, N'task9', N'pending', CAST(N'2022-09-30' AS Date))
GO
INSERT [dbo].[tasks] ([id], [tasks], [tasks_status], [task_date]) VALUES (10, N'task10', N'done', CAST(N'2022-09-30' AS Date))
GO
SET IDENTITY_INSERT [dbo].[tasks] OFF
GO
如果您想使用以下查詢獲取所有唯一 tasks_status 或某些 tasks_status 的計數,則可以使用 group by
對所有人
SELECT tasks_status, count(tasks_status) FROM dbo.tasks GROUP BY tasks_status;
對於完成和待定
SELECT tasks_status, count(tasks_status) FROM dbo.tasks
WHERE tasks_status IN ('done','pending')
GROUP BY tasks_status
如果你只想計算完成,那么你可以使用以下任一方法。 如果您想使用 select 中的其他列,請使用 group by,否則,如果您只想獲得計數而不需要其他列,則只需第二次查詢而不使用 group by
SELECT tasks_status, count(tasks_status) FROM dbo.tasks
WHERE tasks_status = 'done'
GROUP BY tasks_status
或者
SELECT COUNT(tasks_status) FROM dbo.tasks WHERE tasks_status='done'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.