簡體   English   中英

SQL 計算列中的非數值

[英]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

http://sqlfiddle.com/#!17/1e27e/4/0

如果你想獲得所有計數,那么你需要使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM