ฉันสามารถเลือกค่าที่แตกต่างทั้งหมดในคอลัมน์ด้วยวิธีต่อไปนี้:
SELECT DISTINCT column_name FROM table_name;
SELECT column_name FROM table_name GROUP BY column_name;
แต่ฉันจะได้รับการนับแถวจากแบบสอบถามนั้นได้อย่างไร จำเป็นต้องใช้แบบสอบถามย่อยหรือไม่
ฉันสามารถเลือกค่าที่แตกต่างทั้งหมดในคอลัมน์ด้วยวิธีต่อไปนี้:
SELECT DISTINCT column_name FROM table_name;
SELECT column_name FROM table_name GROUP BY column_name;
แต่ฉันจะได้รับการนับแถวจากแบบสอบถามนั้นได้อย่างไร จำเป็นต้องใช้แบบสอบถามย่อยหรือไม่
คำตอบ:
คุณสามารถใช้DISTINCT
คำหลักในCOUNT
ฟังก์ชั่นรวม:
SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
สิ่งนี้จะนับเฉพาะค่าที่แตกต่างสำหรับคอลัมน์นั้น
select A,COUNT(DISTINCT B) from table group by A
สิ่งนี้จะให้ทั้งค่าคอลัมน์ที่แตกต่างและจำนวนของแต่ละค่า ฉันมักจะพบว่าฉันต้องการทราบข้อมูลทั้งสองชิ้น
SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]
columnName
คุณจะได้รับค่าที่แตกต่างเพียงครั้งเดียวและdistinct
คำหลักไม่ได้ทำอะไรที่นี่ ลองสืบค้นโดยไม่ใช้ชุดผลลัพธ์เหมือนกันทุกประการ
โปรดทราบว่า Count () จะละเว้นค่า Null ดังนั้นหากคุณต้องการอนุญาตให้ Null เป็นค่าที่แตกต่างกันคุณสามารถทำสิ่งที่ยุ่งยากเช่น:
select count(distinct my_col)
+ count(distinct Case when my_col is null then 1 else null end)
from my_table
/
case when my_col is null then 1 else my_col end
SELECT my_col, COUNT(my_col) + COUNT(CASE WHEN my_col IS NULL THEN 1 ELSE NULL END) as CountOf from my_Table GROUP BY my_col
count(*)
เป็นจำนวนแถวที่เฉพาะเจาะจง
ผลรวม sql ของค่าไม่ซ้ำกันของ column_name และเรียงลำดับตามความถี่:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
select count(*) from
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T
สิ่งนี้จะให้จำนวนกลุ่มคอลัมน์ที่แตกต่างกัน
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;
คุณต้องนับสีที่แตกต่างจากนั้นให้นามแฝง
select Count(distinct columnName) as columnNameCount from tableName
**
การใช้ SQL ต่อไปนี้เราสามารถรับจำนวนคอลัมน์ที่แตกต่างใน Oracle 11g
**
Select count(distinct(Column_Name)) from TableName
select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true
คุณสามารถใช้แบบสอบถามนี้เพื่อนับข้อมูลที่แตกต่าง / แตกต่างกัน ขอบคุณ
หลังจาก MS SQL Server 2012 คุณสามารถใช้ฟังก์ชันหน้าต่างได้เช่นกัน
SELECT column_name,
COUNT(column_name) OVER (Partition by column_name)
FROM table_name group by column_name ;
จำนวน (แตกต่าง ({fieldname})) ซ้ำซ้อน
เพียงนับ ({fieldname}) ให้ค่าที่ต่างกันทั้งหมดในตารางนั้น มันจะไม่ (สมมติให้มากที่สุด) เพียงแค่ให้คุณนับตาราง [คือไม่เหมือนกับ Count (*) จากตาราง]
count(field)
ส่งกลับจำนวนของเส้นที่เป็นfield
not null