SQL подсчитывает количество строк на основе значения нескольких столбцов

#sql

Вопрос:

У меня есть таблица, как показано ниже. Как мне написать SQL-код, если я хочу подсчитать, сколько раз строка (например, X = A, Y = B) появляется и возвращается как Z? Спасибо

 Select * X, Y 
from DataBase
 

Результаты :

 X   Y           Z(to be determined..)
--------------------
A   Burger      2
A   Burger      2
A   Fries       1
B   Burger      2
B   Pie         1
B   Burger      2
C   Pie         2
C   Pie         2
C   Burger      1
.   .           .
.   .           .
.   .           .
 

Комментарии:

1. Что вы пробовали до сих пор? Где ты застрял? Какую систему баз данных вы хотите использовать?

2. Какую СУБД вы используете? Вы можете сделать это с помощью оконных функций, если они поддерживаются

Ответ №1:

Вы можете сделать:

 select X,Y,count(*) from Table group by X,Y
 

Комментарии:

1. Это не будет показывать повторяющиеся строки, которые хочет OP

2. @shree.pat18 повторяющиеся строки-это бессмысленно, зачем вам их считать, если вы хотите, чтобы повторяющиеся строки были в наборе результатов?!?!

3. Спросите об этом у ОП. Ваше решение не удовлетворяет требованиям в их нынешнем виде

4. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки

Ответ №2:

Вы ищете функцию окна:

 select t.*, count(*) over (partition by x, y) as z
from DataBase t;