Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: sql: посчитать количество одинаковых записей в таблице

Всем здрасьте.

Есть таблица downloads.
В ней есть поле Filename.
Нужно: Вывести все имена файлов из этого поля, причем, чтобы дубликаты удалялись и рядом написать какое количество дубликатов найдено. То есть, сколько раз скачивали каждый файл (Filename).

Если вывести имена файлов и убрать дубликаты - знаю как, это не проблема, то подсчитать количество этих дубликатов + первый найденный файл - проблема.

Например:
first_file.mp3
first_file.mp3
first_file.mp3
second_file.mp3
second_file.mp3
third_file.mp3
third_file.mp3
third_file.mp3
third_file.mp3

Вывод:
first_file.mp3 - 3
second_file - 2
third_file - 4

Оформление не нужно, просто подскажите плиз как посчитать количество одинаковых имен в поле таблицы :)
Ответ:
Сообщение от BOOMer_us
в результатах оставить лишь строчки, у которых cnt>1 (2 и более)?
WHERE `cnt`>1
Вопрос: Посчитать количество одинаковых записей в таблице | SQL

Всем привет! Я новичок, в web-програмирование.
Написал не очень хорошый пример реализации выборки количества партнеров у каждого юзера из таблицы users, по скольку делаю один запрос и потом еще запрос в цикле, это на мой взгляд не правильно. Нужно сделать только один запрос, что бы не делать в цикле. Если кому не сложно, помогите решить эту проблему. Вот пример кода, он работает, но не очень хорошый пример
$sql = "SELECT `partner_id`, COUNT(`partner_id`) AS count_id FROM `users` GROUP BY `partner_id` ORDER BY `count_id` DESC LIMIT 5";
$query = mysqli_query($db, $sql) or die(mysqli_error());

while ($partners = mysqli_fetch_assoc($query)) {

$partner_id = $partners['partner_id'];

$sql_name_surname = "SELECT `name`, `surname` FROM `users` WHERE `id`='{$partner_id}'";
$query_name_surname = mysqli_query($db, $sql_name_surname) or die(mysqli_error());
$partners_name_surname = mysqli_fetch_assoc($query_name_surname);

echo '<p>' . $partners_name_surname['name'] . ' ' . $partners_name_surname['surname'] . ' - <b>' . $partners['count_id'] . '</b></p>';

}
Ответ:
Спасибо за подсказку! В даном примере мне нужно только 5 строчек вывести, потому это не большая проблема вывести имена юзеров сгрупированных partner_id в цикле, как вы заметили. Но кроме этого еще нужно будет потом вывести сгрупиронные partner_id и их количество и имена partner_id без лимитов, тоисть если будет не 5 запросов , а допустем 1 000 000 , это уже больша проблема. Потому я хотел сделать групиронные partner_id и их количество и имена partner_id в одном запросе и вывести их цыклом.
Проблема в том что нельзя выбрать одним запросом сгрупиронные partner_id и их количество и имена partner_id, если такое сделать то выбирается первое имя групированного partner_id , а они там разные, потому не знаю, может нужно встроенные какието выборки делать еще.
Вот пример таблицы . Нужно сделать одним запросом в БД вот такой вывод
Вопрос: Посчитать количество одинаковых цифр в каждом элементе вектора

Вопрос такого плана:в векторе есть n количеств элементов,нужно посчитать количество одинаковых цифр в каждом элементе вектора...была идея разбивать каждый элемент на разряды и сравнивать таким образом цифры в числе,но не придумал способ реализовать данный алгоритм,есть ли другие способы?
Ответ: Объявлен контейнер вектор, элементами которого являются экземпляры структуры sv.
Вопрос: Cтроки, vector. Посчитать количество одинаковых слов в строке

Дана строка текста разделена пробелами, символами "," и ";".Посчитать количество одинаковых слов в строке.
Ответ: Нерегистрозависимый вариант:
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <algorithm>
#include <cctype>
#include <iostream>
#include <regex>
#include <string>
#include <unordered_map>
 
int main()
{
    const std::string str = "Eniki,beniki, eli vareniki; Eli i eli poka ne doeli beniki vareniki.";
    const std::regex reg("\\w+");
 
    std::unordered_map<std::string, int> words;
    for (std::sregex_iterator next(str.begin(), str.end(), reg), end; next != end; ++next)
    {
        std::string word = next->str();
        std::transform(word.begin(), word.end(), word.begin(), tolower);
        ++words[word];
    }
    
    std::cout << std::count_if(words.begin(), words.end(), [](const auto &p) { return p.second > 1; });
}
Добавлено через 1 минуту
http://ideone.com/XZdgqA
Вопрос: Как посчитать количество одинаковых тегов в XML файле?

Добрый всем вечер. Помогите советом.
Как посчитать количество тегов stop в теге times, при том, что тегов times будет сотня и тегов stop в каждом может быть разное количество?

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<route name="1">
    <table number="1">
      <times>
        <stop name="1" />
        <stop name="2" />
        <stop name="3" />
        <stop name="4" />
      </times>
    <times>
        <stop name="56" />
        <stop name="75" />
        <stop name="89" />
      </times>
</table>
  </route>
Понимаю, что пример очень условный. Хочу понять принцип. Сколько в times в table и сколько Stop в каждом times&

Добавлено через 39 минут
Вот как всегда. Стоит написать на форуме и ты сразу разбираешься сам. Извините за беспокойство.
Ответ:
Сообщение от pro100logik
и ты сразу разбираешься сам
Покажите хоть как решили.
Вопрос: Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10

Задание: Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10.
Вопросы таковы:
1.
К примеру строка 1 1 2 тогда одинаковых элементов два или один все же?)) не пойму я.
2. Пришла идея взять строку, удалить одинаковые элементы методом distinct(), и тогда как разность посчитать количество одинаковых элементов. Но пришлось заводить отдельно массив одномерный и туда пихать элементы. Нельзя ли достать как то строку из матрицы проще?Чтобы вызывать методы соответствующие!?

Спасибо!


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Matrix
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Random rnd = new Random(); //конструктор  класса Random, для случайного заполнения матрицы
            const int m=8; // количество строк матрицы
            const int n=10; // количество столбцов матрицы
            int check; // check- переменная для работы с пользователем
 
            // Приглашение пользователя к работе
            
            int[,] A = new int[m, n]; // Создание матрицы размера 8*10
            int[] b = new int[n]; // создание вспомогательного массива
 
            Console.WriteLine("Введите 1 чтобы случайно заполнить матрицу и 2 для ввода матрицы поэлементно по строкам");
            check = int.Parse(Console.ReadLine()); // читаем команду пользователя
 
            if (check == 1) // если пользователь выбрал 1
            {
                for (int i = 0; i < m; i++)
                    for (int j = 0; j < n; j++)
                        A[i, j] = rnd.Next(1, 8); // Случайно заполняем матрицу в диапазоне 1-8
            }
            else
                if (check == 2) // если пользователь выбрал 2
                {
                    Console.WriteLine("Введите матрицу: ");
                    for (int i = 0; i < m; i++)
                        for (int j = 0; j < n; j++)
                        {
                            Console.Write("A[" + i + "," + j + "]: "); //Читаем матрицу с клавиатуры
                            A[i, j] = int.Parse(Console.ReadLine());
 
                        }
                }
 
            Console.WriteLine("Заполненная матрица имеет вид: ");
            // Выводим матрицу на экран 
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write(A[i, j] + " ");
                Console.WriteLine();
            }
 
 
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++) // копиркем строку матрицы в массив
                    b[j] = A[i, j];
                Console.WriteLine("количество одинаковых элементов в "+ (i+1)+" -ой строке = "+(n-b.Distinct().Count())); // удаляем одинаковые элементы и выводим разницу количества столбцов и количества различных элементов
            }
 
         
            //Ожидание ввода любого символа
            Console.ReadKey();
 
        }
    }
}
Ответ: ata,
Linq, мощно)
Вопрос: Посчитать количество гласных и согласных в слове

Посчитать количество гласных и согласных в слове.
Входные данные: строка
Выходные данные: количество гласных и согласных.
Ответ:
Сообщение от MVK
C#
1
.ToCharArray()
Не лишнее?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string word = "слово";
string vowel = "уеыаоэяиёю";
string consonant = "цкнгшщзхфвпрлджчсмтб";
int i, j, k, n;
i = j = k = n = 0;
//подсчитываем общее количество (одинаковых и неодинаковых) гласных (i) и согласных (j)
word.All(z =>
{
   if (vowel.Contains(z))
      i++;
   else
   if (consonant.Contains(z))
      j++;
   return true;
});
//подсчитываем количество (неодинаковых) гласных (k) и согласных (n)
k = word.Intersect(vowel).Count();
n = word.Except(consonant).Count();
Вопрос: количество одинаковых чисел

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

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.HashMap;
import java.util.*;
public class Main {
public static void main(String[] args) {
String txt = " лабораторная работа " ;
HashMap<Character, Integer> map = new HashMap<Character, Integer>(40);
for (int i = 0; i < txt.length(); ++i) {
char c = txt.charAt(i);
//проверяем является ли символ буквой
if (Character.isLetter(c)) {
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
}
 
for (Entry<Character, Integer> entry : map.entrySet()) {
    System.out.println("буква: "+entry.getKey()+" кол - во: "+entry.getValue());
    }
}
}
Генерация выглядит так
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
 public static void main(String[] args) {
        Random rand = new Random();
        Set<Integer> set = new HashSet();
        for (int i = 0; i < 1000; i++) {
            int x = rand.nextInt(20);
            set.add(x);
        }
        Iterator iter = set.iterator();
        while (iter.hasNext()) {
            System.out.print(" " + iter.next() + ",");
        }
    }
Ответ: Спасибо большое!!
Вопрос: Найти количество одинаковых элементов массива

Уважаемые кодеры, прошу вашей помощи.

Есть одномерный массив, который уже задан, например int a[7]={1,2,3,2,6,2,7}
Нужно посчитать количество одинаковых элементов массива а.
Ответ:
Сообщение от Tim1444
пожалуйста,
выводит элемент ,и сколько раз он встречается в массиве
Вопрос: Посчитать количество отрицательных элементов главной диагонали матрицы

Составить схему алгоритма и написать программу.
Дан массив О = [ {о [i, j] }, i=1,10; j=1,10 ]
(элементы выбираются случайным образом):

1.Найти max- элемент во 2-ой строке.
2.* Посчитать количество отрицательных элементов главной диагонали.
3.Найти суммы элементов в каждой строке.
4.Перемножить элементы 5 столбца, стоящие на нечетных позициях
5.Упорядочить массив по не возрастанию элементов 1 строки.
6.Найти количество цифр в целом положительном числе.
7.С клавиатуры вводиться текст. Слова разделяются пробелом. Ввод текста прекращается после нажатия на клавиатуре точки. Выдайте на экран преобразованный текст, заменив в нем все запятые на двоеточия.
Если невозможно выполнить тот или иной пункт, то необходимо выдать соответствующее сообщение

Заранее спасибо)
Ответ:
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
program massiv10;
Uses
crt;
const 
N=10; {строки}
M=10; {стобцы}
var B:array [1..N, 1..M] of integer;
s: array[1..n] of byte;
    c: char; 
    r: string; 
t: boolean; 
I, J, tmp:integer;
ST,SK,max,P,G,k: integer;
 
begin
 
randomize;{Всему массиву рандомные цифры}
for i:=1 to N do
for j:=1 to M do
B [I, J]:=random (100)-10;
 
{выводим массив на экран}
for i:=1 to N do
begin
for j:=1 to M do
write ('',B[I,J]:4);
writeln
end;
 
Writeln;
Writeln('To continue press Enter');
ReadLn;
 
 
{Задание 1 Найти max- элемент во 2-ой строке.}
Writeln('ЗАДАНИЕ 1 - Найти max- элемент во 2-ой строке.:');
max:=B[i,j]; SK:=0; ST:=0;
for i:=2 to 2 do
for j:=1 to M do
if B[i,j]>max then
begin max:=B[i,j]; SK:=i; ST:=j; end;
writeln('Максимальный элемент - ',max);
write('Номер строки - ',SK ,'  Номер столбца - ',ST); 
 
Writeln;
Writeln('To continue press Enter');
ReadLn;
 
{Задание 2 *Посчитать количество отрицательных элементов главной диагонали.}
Writeln('ЗАДАНИЕ 2 - *Посчитать количество отрицательных элементов главной диагонали.:');
k:=0;
for i:=1 to N do
for j:=1 to M do
if i=j then
if B[i,j]<0 then k:=k+1;
writeln('Количество отрицательных элементов ', k); 
 
Writeln;
Writeln('To continue press Enter');
ReadLn;
 
 
 
{Задание 3 Найти суммы элементов в каждой строке.}
k:=1;
Writeln('ЗАДАНИЕ 3 - Найти суммы элементов в каждой строке:');
for i := 1 to N do begin
for j := 1 to M do begin
s[i] := s[i] + B[i,j];
end;
writeln ('Сумма элементов ',k ,' строки = ',s[i]);
inc(k);
    end;
    
Writeln;
Writeln('To continue press Enter');
ReadLn;
    
 
{Задание 4 Перемножить элементы 5 столбца, стоящие на нечетных позициях.}
Writeln('ЗАДАНИЕ 4 - Перемножать элементы 5 столбца, стоящие на нечетных позициях.');
P:=1;
    for i := 1 to N do 
  for j := 5 to 5 do begin
  if i mod 2 <> 0 then 
  P:=P*B[i,j];
  end;
  writeln(' Произведение нечетныъ элементов ',p); 
  
 Writeln;
Writeln('To continue press Enter');
ReadLn;
 
 
{Задание 5 Упорядочить массив по по убыванию элементов 1 строки.}
Writeln('Задание 5 Упорядочить массив по убыванию элементов 1 строки.');
 
 for i := 1 to 1 do begin 
    t := true; 
    while t do begin 
      t := false; 
      for j := 1 to M - 1 do 
        if B[i, j] < B[i, j + 1] then begin 
          tmp := B[i, j]; 
          B[i, j] := B[i, j + 1]; 
          B[i, j + 1] := tmp; 
          t := true; 
        end; 
    end; 
  end; 
  writeln('Результат не хитрых манипуляций'); 
  for i := 1 to n do begin 
    for j := 1 to M do write(B[i, j]:4); 
    writeln; 
  end; 
  
   Writeln;
Writeln('To continue press Enter');
ReadLn;
 
 
{Задание 6   Найти количество цифр в целом положительном числе.}
Writeln('Задание 6   Найти количество цифр в целом положительном числе.');
  
writeln('Введите целое положительное число ');
readln(G);
k:=0;
while G<>0 do begin
G:=G div 10;
inc(k);
end;
writeln(' Количество цифр в набранном положетельном числе  ',k);
 
 
   Writeln;
Writeln('To continue press Enter');
ReadLn;
 
 
{Задача 7}
Writeln('ЗАДАНИЕ 7 заменить все запятые на двоеточия');
begin
write('введите текст (ввод закончить точкой) : '); 
readln(r);
while r <> '.' do begin 
for i := 1 to length(r) do
  if r[i] = ',' then r[i] := ':'; writeln(r);
 
end;
 
end;
 
end.